diff options
| author | Fujii Hironori | 2015-02-19 13:40:48 +0200 |
|---|---|---|
| committer | Eli Zaretskii | 2015-02-19 13:40:48 +0200 |
| commit | 37e3549055fc153657f0a04b28cf29b7e15a97d8 (patch) | |
| tree | bdea4709fc794d5812c21b27650e65d8664e2de0 /src | |
| parent | 99db66a01fd998942c4e75733863903247345d90 (diff) | |
| download | emacs-37e3549055fc153657f0a04b28cf29b7e15a97d8.tar.gz emacs-37e3549055fc153657f0a04b28cf29b7e15a97d8.zip | |
Fix display of IME window on MS-Windows (Bug#11732)
src/w32fns.c (w32_wnd_proc) <WM_IME_STARTCOMPOSITION>: Pass the
message to DefWindowProc, after positioning the IME window, to
trigger its display.
Copyright-paperwork-exempt: yes
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 6 | ||||
| -rw-r--r-- | src/w32fns.c | 12 |
2 files changed, 13 insertions, 5 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 1c4758f969b..87133535e97 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | 2015-02-19 Fujii Hironori <fujii.hironori@gmail.com> (tiny change) | ||
| 2 | |||
| 3 | * w32fns.c (w32_wnd_proc) <WM_IME_STARTCOMPOSITION>: Pass the | ||
| 4 | message to DefWindowProc, after positioning the IME window, to | ||
| 5 | trigger its display. (Bug#11732) | ||
| 6 | |||
| 1 | 2015-02-18 Eli Zaretskii <eliz@gnu.org> | 7 | 2015-02-18 Eli Zaretskii <eliz@gnu.org> |
| 2 | 8 | ||
| 3 | * emacs.c (Fkill_emacs): Exit with specified exit code even if | 9 | * emacs.c (Fkill_emacs): Exit with specified exit code even if |
diff --git a/src/w32fns.c b/src/w32fns.c index 08000d87d38..1e685ad6d98 100644 --- a/src/w32fns.c +++ b/src/w32fns.c | |||
| @@ -3295,12 +3295,12 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) | |||
| 3295 | field being reset to nil. */ | 3295 | field being reset to nil. */ |
| 3296 | f = x_window_to_frame (dpyinfo, hwnd); | 3296 | f = x_window_to_frame (dpyinfo, hwnd); |
| 3297 | if (!(f && FRAME_LIVE_P (f))) | 3297 | if (!(f && FRAME_LIVE_P (f))) |
| 3298 | break; | 3298 | goto dflt; |
| 3299 | w = XWINDOW (FRAME_SELECTED_WINDOW (f)); | 3299 | w = XWINDOW (FRAME_SELECTED_WINDOW (f)); |
| 3300 | /* Punt if someone changed the frame's selected window | 3300 | /* Punt if someone changed the frame's selected window |
| 3301 | behind our back. */ | 3301 | behind our back. */ |
| 3302 | if (w != w32_system_caret_window) | 3302 | if (w != w32_system_caret_window) |
| 3303 | break; | 3303 | goto dflt; |
| 3304 | 3304 | ||
| 3305 | form.dwStyle = CFS_RECT; | 3305 | form.dwStyle = CFS_RECT; |
| 3306 | form.ptCurrentPos.x = w32_system_caret_x; | 3306 | form.ptCurrentPos.x = w32_system_caret_x; |
| @@ -3318,17 +3318,19 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) | |||
| 3318 | 3318 | ||
| 3319 | /* Punt if the window was deleted behind our back. */ | 3319 | /* Punt if the window was deleted behind our back. */ |
| 3320 | if (!BUFFERP (w->contents)) | 3320 | if (!BUFFERP (w->contents)) |
| 3321 | break; | 3321 | goto dflt; |
| 3322 | 3322 | ||
| 3323 | context = get_ime_context_fn (hwnd); | 3323 | context = get_ime_context_fn (hwnd); |
| 3324 | 3324 | ||
| 3325 | if (!context) | 3325 | if (!context) |
| 3326 | break; | 3326 | goto dflt; |
| 3327 | 3327 | ||
| 3328 | set_ime_composition_window_fn (context, &form); | 3328 | set_ime_composition_window_fn (context, &form); |
| 3329 | release_ime_context_fn (hwnd, context); | 3329 | release_ime_context_fn (hwnd, context); |
| 3330 | } | 3330 | } |
| 3331 | break; | 3331 | /* Pass WM_IME_STARTCOMPOSITION to DefWindowProc, so that the |
| 3332 | composition window will actually be displayed. */ | ||
| 3333 | goto dflt; | ||
| 3332 | 3334 | ||
| 3333 | case WM_IME_ENDCOMPOSITION: | 3335 | case WM_IME_ENDCOMPOSITION: |
| 3334 | ignore_ime_char = 0; | 3336 | ignore_ime_char = 0; |