Somewhat gruesome tweak to use SetClassLongPtr where available and degrade
[u/mdw/putty] / windows / windlg.c
index 59c0112..019f615 100644 (file)
@@ -42,8 +42,6 @@ static int nevents = 0, negsize = 0;
 
 extern Config cfg;                    /* defined in window.c */
 
-struct sesslist sesslist;             /* exported to window.c */
-
 #define PRINTER_DISABLED_STRING "None (printing disabled)"
 
 void force_normal(HWND hwnd)
@@ -242,7 +240,7 @@ static int SaneDialogBox(HINSTANCE hinst,
     wc.style = CS_DBLCLKS | CS_SAVEBITS | CS_BYTEALIGNWINDOW;
     wc.lpfnWndProc = DefDlgProc;
     wc.cbClsExtra = 0;
-    wc.cbWndExtra = DLGWINDOWEXTRA + 8;
+    wc.cbWndExtra = DLGWINDOWEXTRA + 2*sizeof(LONG_PTR);
     wc.hInstance = hinst;
     wc.hIcon = NULL;
     wc.hCursor = LoadCursor(NULL, IDC_ARROW);
@@ -253,11 +251,11 @@ static int SaneDialogBox(HINSTANCE hinst,
 
     hwnd = CreateDialog(hinst, tmpl, hwndparent, lpDialogFunc);
 
-    SetWindowLong(hwnd, BOXFLAGS, 0); /* flags */
-    SetWindowLong(hwnd, BOXRESULT, 0); /* result from SaneEndDialog */
+    SetWindowLongPtr(hwnd, BOXFLAGS, 0); /* flags */
+    SetWindowLongPtr(hwnd, BOXRESULT, 0); /* result from SaneEndDialog */
 
     while ((gm=GetMessage(&msg, NULL, 0, 0)) > 0) {
-       flags=GetWindowLong(hwnd, BOXFLAGS);
+       flags=GetWindowLongPtr(hwnd, BOXFLAGS);
        if (!(flags & DF_END) && !IsDialogMessage(hwnd, &msg))
            DispatchMessage(&msg);
        if (flags & DF_END)
@@ -267,15 +265,15 @@ static int SaneDialogBox(HINSTANCE hinst,
     if (gm == 0)
         PostQuitMessage(msg.wParam); /* We got a WM_QUIT, pass it on */
 
-    ret=GetWindowLong(hwnd, BOXRESULT);
+    ret=GetWindowLongPtr(hwnd, BOXRESULT);
     DestroyWindow(hwnd);
     return ret;
 }
 
 static void SaneEndDialog(HWND hwnd, int ret)
 {
-    SetWindowLong(hwnd, BOXRESULT, ret);
-    SetWindowLong(hwnd, BOXFLAGS, DF_END);
+    SetWindowLongPtr(hwnd, BOXRESULT, ret);
+    SetWindowLongPtr(hwnd, BOXFLAGS, DF_END);
 }
 
 /*
@@ -377,10 +375,11 @@ static int CALLBACK GenericMainDlgProc(HWND hwnd, UINT msg,
        dp.hwnd = hwnd;
        create_controls(hwnd, "");     /* Open and Cancel buttons etc */
        SetWindowText(hwnd, dp.wintitle);
-       SetWindowLong(hwnd, GWL_USERDATA, 0);
+       SetWindowLongPtr(hwnd, GWLP_USERDATA, 0);
         if (help_path)
-            SetWindowLong(hwnd, GWL_EXSTYLE,
-                          GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_CONTEXTHELP);
+            SetWindowLongPtr(hwnd, GWL_EXSTYLE,
+                            GetWindowLongPtr(hwnd, GWL_EXSTYLE) |
+                            WS_EX_CONTEXTHELP);
         else {
             HWND item = GetDlgItem(hwnd, IDC_HELPBTN);
             if (item)
@@ -514,7 +513,7 @@ static int CALLBACK GenericMainDlgProc(HWND hwnd, UINT msg,
            }
        }
 
-       SetWindowLong(hwnd, GWL_USERDATA, 1);
+       SetWindowLongPtr(hwnd, GWLP_USERDATA, 1);
        return 0;
       case WM_LBUTTONUP:
        /*
@@ -575,7 +574,7 @@ static int CALLBACK GenericMainDlgProc(HWND hwnd, UINT msg,
        /*
         * Only process WM_COMMAND once the dialog is fully formed.
         */
-       if (GetWindowLong(hwnd, GWL_USERDATA) == 1) {
+       if (GetWindowLongPtr(hwnd, GWLP_USERDATA) == 1) {
            ret = winctrl_handle_command(&dp, msg, wParam, lParam);
            if (dp.ended && GetCapture() != hwnd)
                SaneEndDialog(hwnd, dp.endresult ? 1 : 0);
@@ -649,7 +648,7 @@ int do_config(void)
     int ret;
 
     ctrlbox = ctrl_new_box();
-    setup_config_box(ctrlbox, &sesslist, FALSE, 0, 0);
+    setup_config_box(ctrlbox, FALSE, 0, 0);
     win_setup_config_box(ctrlbox, &dp.hwnd, (help_path != NULL), FALSE);
     dp_init(&dp);
     winctrl_init(&ctrls_base);
@@ -661,11 +660,9 @@ int do_config(void)
     dp.data = &cfg;
     dp.shortcuts['g'] = TRUE;         /* the treeview: `Cate&gory' */
 
-    get_sesslist(&sesslist, TRUE);
     ret =
        SaneDialogBox(hinst, MAKEINTRESOURCE(IDD_MAINBOX), NULL,
                  GenericMainDlgProc);
-    get_sesslist(&sesslist, FALSE);
 
     ctrl_free_box(ctrlbox);
     winctrl_cleanup(&ctrls_panel);
@@ -683,7 +680,7 @@ int do_reconfig(HWND hwnd, int protcfginfo)
     backup_cfg = cfg;                 /* structure copy */
 
     ctrlbox = ctrl_new_box();
-    setup_config_box(ctrlbox, &sesslist, TRUE, cfg.protocol, protcfginfo);
+    setup_config_box(ctrlbox, TRUE, cfg.protocol, protcfginfo);
     win_setup_config_box(ctrlbox, &dp.hwnd, (help_path != NULL), TRUE);
     dp_init(&dp);
     winctrl_init(&ctrls_base);