1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-10-21 20:38:45 +00:00

Fix sending pre-edit characters after hitting Enter. This mainly affects

CJK users.

Submitted by:	perky
Obtained from:	Gentoo Linux
This commit is contained in:
Joe Marcus Clarke 2003-08-26 01:44:47 +00:00
parent 9ac9016e7b
commit 5878fb898f
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=87706
4 changed files with 62 additions and 0 deletions

View File

@ -6,6 +6,7 @@
PORTNAME= gaim
PORTVERSION= 0.67
PORTREVISION= 1
CATEGORIES?= net
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR= ${PORTNAME}

View File

@ -0,0 +1,30 @@
--- src/gtkconv.c.orig Thu Aug 14 07:40:41 2003
+++ src/gtkconv.c Mon Aug 25 16:34:55 2003
@@ -1138,11 +1138,27 @@
GaimConversation *conv;
GaimGtkConversation *gtkconv;
GaimGtkWindow *gtkwin;
+ gboolean im_context_retval = FALSE;
+ static guint32 last_event_time;
conv = (GaimConversation *)data;
gtkconv = GAIM_GTK_CONVERSATION(conv);
win = gaim_conversation_get_window(conv);
gtkwin = GAIM_GTK_WINDOW(win);
+
+ /*
+ * Check if the input method handles this keyevent or we can use it.
+ * We need to check the event time, otherwise the gtk xim module gets into an event loop (bug?)
+ * Maybe this is not the best solution, but it works.
+ */
+
+ if (last_event_time != event->time) {
+ im_context_retval = gtk_im_context_filter_keypress(GTK_TEXT_VIEW(gtkconv->entry)->im_context, event);
+ }
+ last_event_time = event->time;
+ if (im_context_retval == TRUE) {
+ return TRUE;
+ }
if (event->keyval == GDK_Page_Up) {
g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");

View File

@ -6,6 +6,7 @@
PORTNAME= gaim
PORTVERSION= 0.67
PORTREVISION= 1
CATEGORIES?= net
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR= ${PORTNAME}

View File

@ -0,0 +1,30 @@
--- src/gtkconv.c.orig Thu Aug 14 07:40:41 2003
+++ src/gtkconv.c Mon Aug 25 16:34:55 2003
@@ -1138,11 +1138,27 @@
GaimConversation *conv;
GaimGtkConversation *gtkconv;
GaimGtkWindow *gtkwin;
+ gboolean im_context_retval = FALSE;
+ static guint32 last_event_time;
conv = (GaimConversation *)data;
gtkconv = GAIM_GTK_CONVERSATION(conv);
win = gaim_conversation_get_window(conv);
gtkwin = GAIM_GTK_WINDOW(win);
+
+ /*
+ * Check if the input method handles this keyevent or we can use it.
+ * We need to check the event time, otherwise the gtk xim module gets into an event loop (bug?)
+ * Maybe this is not the best solution, but it works.
+ */
+
+ if (last_event_time != event->time) {
+ im_context_retval = gtk_im_context_filter_keypress(GTK_TEXT_VIEW(gtkconv->entry)->im_context, event);
+ }
+ last_event_time = event->time;
+ if (im_context_retval == TRUE) {
+ return TRUE;
+ }
if (event->keyval == GDK_Page_Up) {
g_signal_stop_emission_by_name(G_OBJECT(entry), "key_press_event");