aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFujii Hironori2015-02-19 13:40:48 +0200
committerEli Zaretskii2015-02-19 13:40:48 +0200
commit37e3549055fc153657f0a04b28cf29b7e15a97d8 (patch)
treebdea4709fc794d5812c21b27650e65d8664e2de0 /src
parent99db66a01fd998942c4e75733863903247345d90 (diff)
downloademacs-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/ChangeLog6
-rw-r--r--src/w32fns.c12
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 @@
12015-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
12015-02-18 Eli Zaretskii <eliz@gnu.org> 72015-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;