X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/9ca5da428c0113cced4401cc8c424eb6f485608a..5b80d07f712ff90cfae4c89084e25eb90dd2e510:/window.c diff --git a/window.c b/window.c index fe9d2e91..7b7dee12 100644 --- 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) {