Miscellaneous fixes to try to make other compilers happier
[u/mdw/putty] / window.c
index fe9d2e9..7b7dee1 100644 (file)
--- a/window.c
+++ b/window.c
@@ -132,7 +132,7 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) {
        default_protocol = DEFAULT_PROTOCOL;
        default_port = DEFAULT_PORT;
 
-       do_defaults(NULL);
+       do_defaults(NULL, &cfg);
 
        p = cmdline;
        while (*p && isspace(*p)) p++;
@@ -190,7 +190,7 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) {
         * An initial @ means to activate a saved session.
         */
        if (*p == '@') {
-           do_defaults (p+1);
+           do_defaults (p+1, &cfg);
            if (!*cfg.host && !do_config()) {
                WSACleanup();
                return 0;
@@ -745,7 +745,7 @@ font_messup:
 
     if (cfg.fontisbold) {
        fw_dontcare = FW_BOLD;
-       fw_bold = FW_BLACK;
+       fw_bold = FW_HEAVY;
    } else {
        fw_dontcare = FW_DONTCARE;
        fw_bold = FW_BOLD;
@@ -1758,10 +1758,10 @@ static int TranslateKey(UINT message, WPARAM wParam, LPARAM lParam, unsigned cha
     int  r, i, code;
     unsigned char * p = output;
 
-static WORD keys[3];
-static int compose_state = 0;
-static int compose_char = 0;
-static WPARAM compose_key = 0;
+    static WORD keys[3];
+    static int compose_state = 0;
+    static int compose_char = 0;
+    static WPARAM compose_key = 0;
 
     r = GetKeyboardState(keystate);
     if (!r) memset(keystate, 0, sizeof(keystate));
@@ -2072,6 +2072,16 @@ static WPARAM compose_key = 0;
                return p - output;
            }
        }
+
+       /*
+        * Finally, deal with Return ourselves. (Win95 seems to
+        * foul it up when Alt is pressed, for some reason.)
+        */
+       if (wParam == VK_RETURN)       /* Return */
+       {
+           *p++ = 0x0D;
+           return p-output;
+       }
     }
 
     /* Okay we've done everything interesting; let windows deal with 
@@ -2242,7 +2252,7 @@ void palette_reset (void) {
     }
 }
 
-void write_clip (void *data, int len) {
+void write_clip (void *data, int len, int must_deselect) {
     HGLOBAL clipdata;
     void *lock;
 
@@ -2256,14 +2266,18 @@ void write_clip (void *data, int len) {
     ((unsigned char *) lock) [len] = 0;
     GlobalUnlock (clipdata);
 
-    SendMessage (hwnd, WM_IGNORE_CLIP, TRUE, 0);
+    if (!must_deselect)
+        SendMessage (hwnd, WM_IGNORE_CLIP, TRUE, 0);
+
     if (OpenClipboard (hwnd)) {
        EmptyClipboard();
        SetClipboardData (CF_TEXT, clipdata);
        CloseClipboard();
     } else
        GlobalFree (clipdata);
-    SendMessage (hwnd, WM_IGNORE_CLIP, FALSE, 0);
+
+    if (!must_deselect)
+        SendMessage (hwnd, WM_IGNORE_CLIP, FALSE, 0);
 }
 
 void get_clip (void **p, int *len) {