Enable better build-time flexibility over which WinSock to include
[u/mdw/putty] / windlg.c
index 41951f9..77db051 100644 (file)
--- a/windlg.c
+++ b/windlg.c
@@ -1,7 +1,13 @@
 #include <windows.h>
 #include <commctrl.h>
 #include <commdlg.h>
+#ifndef AUTO_WINSOCK
+#ifdef WINSOCK_TWO
+#include <winsock2.h>
+#else
 #include <winsock.h>
+#endif
+#endif
 #include <stdio.h>
 #include <stdlib.h>
 
@@ -478,6 +484,7 @@ static int CALLBACK AboutProc (HWND hwnd, UINT msg,
            DialogBox (hinst, MAKEINTRESOURCE(IDD_LICENCEBOX),
                       NULL, LicenceProc);
            EnableWindow(hwnd, 1);
+            SetActiveWindow(hwnd);
            return 0;
        }
        return 0;
@@ -508,6 +515,8 @@ static int GeneralPanelProc (HWND hwnd, UINT msg,
     return 0;
 }
 
+static char savedsession[2048];
+
 static int CALLBACK ConnectionProc (HWND hwnd, UINT msg,
                                    WPARAM wParam, LPARAM lParam) {
     int i;
@@ -515,6 +524,7 @@ static int CALLBACK ConnectionProc (HWND hwnd, UINT msg,
     switch (msg) {
       case WM_INITDIALOG:
        SetDlgItemText (hwnd, IDC0_HOST, cfg.host);
+       SetDlgItemText (hwnd, IDC0_SESSEDIT, savedsession);
        SetDlgItemInt (hwnd, IDC0_PORT, cfg.port, FALSE);
        for (i = 0; i < nsessions; i++)
            SendDlgItemMessage (hwnd, IDC0_SESSLIST, LB_ADDSTRING,
@@ -571,9 +581,13 @@ static int CALLBACK ConnectionProc (HWND hwnd, UINT msg,
                cfg.warn_on_close = IsDlgButtonChecked (hwnd, IDC0_CLOSEWARN);
            break;
          case IDC0_SESSEDIT:
-           if (HIWORD(wParam) == EN_CHANGE)
+           if (HIWORD(wParam) == EN_CHANGE) {
                SendDlgItemMessage (hwnd, IDC0_SESSLIST, LB_SETCURSEL,
                                    (WPARAM) -1, 0);
+                GetDlgItemText (hwnd, IDC0_SESSEDIT,
+                                savedsession, sizeof(savedsession)-1);
+                savedsession[sizeof(savedsession)-1] = '\0';
+            }
            break;
          case IDC0_SESSSAVE:
            if (HIWORD(wParam) == BN_CLICKED ||
@@ -1460,6 +1474,7 @@ static int CALLBACK MainDlgProc (HWND hwnd, UINT msg,
        DialogBox(hinst, MAKEINTRESOURCE(IDD_ABOUTBOX),
                  GetParent(hwnd), AboutProc);
        EnableWindow(hwnd, 1);
+        SetActiveWindow(hwnd);
     }
     return GenericMainDlgProc (hwnd, msg, wParam, lParam,
                               MAIN_NPANELS, mainp, &page);
@@ -1528,6 +1543,7 @@ int do_config (void) {
     int ret;
 
     get_sesslist(TRUE);
+    savedsession[0] = '\0';
     ret = DialogBox (hinst, MAKEINTRESOURCE(IDD_MAINBOX), NULL, MainDlgProc);
     get_sesslist(FALSE);