[gtk+/gtk-2-24] imquartz: Fallback to slave IM context if no NSEvent exists.
- From: John Ralls <jralls src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/gtk-2-24] imquartz: Fallback to slave IM context if no NSEvent exists.
- Date: Sat, 27 Jul 2013 21:06:03 +0000 (UTC)
commit c064e188943ad6bd79d8476a0f53e27bfddb4a1f
Author: Takuro Ashie <ashie clear-code com>
Date: Sat Jul 27 10:34:39 2013 +0900
imquartz: Fallback to slave IM context if no NSEvent exists.
When an application translates a key event and drop its native event
before passing to imquartz, it can't recognize the NSEvent. On this
case imquartz doesn't emit any signals such as "commit" signal so
that the application doesn't insert any text. To avoid no response,
at least imquartz should fallback to slave GtkIMContextSimple.
https://bugzilla.gnome.org/show_bug.cgi?id=694273#c27
modules/input/imquartz.c | 11 +++++++----
1 files changed, 7 insertions(+), 4 deletions(-)
---
diff --git a/modules/input/imquartz.c b/modules/input/imquartz.c
index 9788ad3..61ad914 100644
--- a/modules/input/imquartz.c
+++ b/modules/input/imquartz.c
@@ -137,9 +137,6 @@ quartz_filter_keypress (GtkIMContext *context,
GTK_NOTE (MISC, g_print ("quartz_filter_keypress\n"));
- if (event->type == GDK_KEY_RELEASE)
- return FALSE;
-
if (!qc->client_window)
return FALSE;
@@ -152,10 +149,16 @@ quartz_filter_keypress (GtkIMContext *context,
GTK_NOTE (MISC, g_print ("client_window: %p, win: %p, nsview: %p\n",
qc->client_window, win, nsview));
+ NSEvent *nsevent = gdk_quartz_event_get_nsevent ((GdkEvent *)event);
+ if (!nsevent)
+ return gtk_im_context_filter_keypress (qc->slave, event);
+
+ if (event->type == GDK_KEY_RELEASE)
+ return FALSE;
+
if (event->hardware_keycode == 55) /* Command */
return FALSE;
- NSEvent *nsevent = gdk_quartz_event_get_nsevent ((GdkEvent *)event);
NSEventType etype = [nsevent type];
if (etype == NSKeyDown)
[nsview keyDown: nsevent];
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]