X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/811f10b3586fc47cb3edbb70b04e7943c414ee27..3a9531212a6d0077e566912d4790020315d15eb1:/window.c?ds=sidebyside diff --git a/window.c b/window.c index 52af23e2..1b61b6c6 100644 --- a/window.c +++ b/window.c @@ -633,15 +633,15 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) set_input_locale(GetKeyboardLayout(0)); /* - * Finally show the window! + * Open the initial log file if there is one. */ - ShowWindow(hwnd, show); - SetForegroundWindow(hwnd); + logfopen(); /* - * Open the initial log file if there is one. + * Finally show the window! */ - logfopen(); + ShowWindow(hwnd, show); + SetForegroundWindow(hwnd); /* * Set the palette up. @@ -2384,7 +2384,7 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message, HIMC hIMC; int n; char *buff; - + if(osVersion.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS || osVersion.dwPlatformId == VER_PLATFORM_WIN32s) break; /* no Unicode */ @@ -2395,9 +2395,17 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message, n = ImmGetCompositionStringW(hIMC, GCS_RESULTSTR, NULL, 0); if (n > 0) { + int i; buff = (char*) smalloc(n); ImmGetCompositionStringW(hIMC, GCS_RESULTSTR, buff, n); - luni_send((unsigned short *)buff, n / 2, 1); + /* + * Jaeyoun Chung reports that Korean character + * input doesn't work correctly if we do a single + * luni_send() covering the whole of buff. So + * instead we luni_send the characters one by one. + */ + for (i = 0; i < n; i += 2) + luni_send((unsigned short *)(buff+i), 1, 1); free(buff); } ImmReleaseContext(hwnd, hIMC); @@ -3496,11 +3504,24 @@ static int TranslateKey(UINT message, WPARAM wParam, LPARAM lParam, p += sprintf((char *) p, "\x1B%c", xkey); else { int app_flg = (app_cursor_keys && !cfg.no_applic_c); - /* VT100 & VT102 manuals both state the app cursor keys - * only work if the app keypad is on. +#if 0 + /* + * RDB: VT100 & VT102 manuals both state the + * app cursor keys only work if the app keypad + * is on. + * + * SGT: That may well be true, but xterm + * disagrees and so does at least one + * application, so I've #if'ed this out and the + * behaviour is back to PuTTY's original: app + * cursor and app keypad are independently + * switchable modes. If anyone complains about + * _this_ I'll have to put in a configurable + * option. */ if (!app_keypad_keys) app_flg = 0; +#endif /* Useful mapping of Ctrl-arrows */ if (shift_state == 2) app_flg = !app_flg;