summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFujii Hironori <fujii.hironori@gmail.com>2015-02-19 13:40:48 +0200
committerEli Zaretskii <eliz@gnu.org>2015-02-19 13:40:48 +0200
commit37e3549055fc153657f0a04b28cf29b7e15a97d8 (patch)
treebdea4709fc794d5812c21b27650e65d8664e2de0
parent99db66a01fd998942c4e75733863903247345d90 (diff)
downloademacs-37e3549055fc153657f0a04b28cf29b7e15a97d8.tar.gz
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
-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 @@
+2015-02-19 Fujii Hironori <fujii.hironori@gmail.com> (tiny change)
+
+ * w32fns.c (w32_wnd_proc) <WM_IME_STARTCOMPOSITION>: Pass the
+ message to DefWindowProc, after positioning the IME window, to
+ trigger its display. (Bug#11732)
+
2015-02-18 Eli Zaretskii <eliz@gnu.org>
* 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)
field being reset to nil. */
f = x_window_to_frame (dpyinfo, hwnd);
if (!(f && FRAME_LIVE_P (f)))
- break;
+ goto dflt;
w = XWINDOW (FRAME_SELECTED_WINDOW (f));
/* Punt if someone changed the frame's selected window
behind our back. */
if (w != w32_system_caret_window)
- break;
+ goto dflt;
form.dwStyle = CFS_RECT;
form.ptCurrentPos.x = w32_system_caret_x;
@@ -3318,17 +3318,19 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
/* Punt if the window was deleted behind our back. */
if (!BUFFERP (w->contents))
- break;
+ goto dflt;
context = get_ime_context_fn (hwnd);
if (!context)
- break;
+ goto dflt;
set_ime_composition_window_fn (context, &form);
release_ime_context_fn (hwnd, context);
}
- break;
+ /* Pass WM_IME_STARTCOMPOSITION to DefWindowProc, so that the
+ composition window will actually be displayed. */
+ goto dflt;
case WM_IME_ENDCOMPOSITION:
ignore_ime_char = 0;