rpms/scim/devel scim-1.4.7-fix-fallback.patch, NONE, 1.1 scim.spec, 1.106, 1.107

Huang Peng (phuang) fedora-extras-commits at redhat.com
Mon Mar 3 08:37:53 UTC 2008


Author: phuang

Update of /cvs/pkgs/rpms/scim/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv18639

Modified Files:
	scim.spec 
Added Files:
	scim-1.4.7-fix-fallback.patch 
Log Message:
Fix fallback problem in gtkim module #235147.


scim-1.4.7-fix-fallback.patch:

--- NEW FILE scim-1.4.7-fix-fallback.patch ---
diff -up scim-1.4.7/extras/gtk2_immodule/gtkimcontextscim.cpp.fix-fallback scim-1.4.7/extras/gtk2_immodule/gtkimcontextscim.cpp
--- scim-1.4.7/extras/gtk2_immodule/gtkimcontextscim.cpp.fix-fallback	2008-03-03 16:02:44.000000000 +0800
+++ scim-1.4.7/extras/gtk2_immodule/gtkimcontextscim.cpp	2008-03-03 16:29:49.000000000 +0800
@@ -137,6 +137,12 @@ static gboolean gtk_scim_key_snooper    
 static void     gtk_im_slave_commit_cb                  (GtkIMContext           *context,
                                                          const char             *str,
                                                          GtkIMContextSCIM       *context_scim);
+static void     gtk_im_slave_preedit_changed_cb         (GtkIMContext           *context,
+                                                         GtkIMContextSCIM       *context_scim);
+static void     gtk_im_slave_preedit_start_cb           (GtkIMContext           *context,
+                                                         GtkIMContextSCIM       *context_scim);
+static void     gtk_im_slave_preedit_end_cb             (GtkIMContext           *context,
+                                                         GtkIMContextSCIM       *context_scim);
 
 /* private functions */
 static void     panel_slot_reload_config                (int                     context);
@@ -499,11 +505,30 @@ gtk_im_context_scim_init (GtkIMContextSC
     context_scim->impl = NULL;
 
     /* slave exists for using gtk+'s table based input method */
+    context_scim->slave_preedit = false;
     context_scim->slave = gtk_im_context_simple_new ();
     g_signal_connect(G_OBJECT(context_scim->slave),
                      "commit",
                      G_CALLBACK(gtk_im_slave_commit_cb),
                      context_scim);
+    
+    g_signal_connect(G_OBJECT(context_scim->slave),
+                     "preedit-changed",
+                     G_CALLBACK(gtk_im_slave_preedit_changed_cb),
+                     context_scim);
+    
+    g_signal_connect(G_OBJECT(context_scim->slave),
+                     "preedit-start",
+                     G_CALLBACK(gtk_im_slave_preedit_start_cb),
+                     context_scim);
+    
+    g_signal_connect(G_OBJECT(context_scim->slave),
+                     "preedit-end",
+                     G_CALLBACK(gtk_im_slave_preedit_end_cb),
+                     context_scim);
+
+
+
 
     if (_backend.null ()) return;
 
@@ -609,6 +634,15 @@ gtk_im_context_scim_finalize (GObject *o
     g_signal_handlers_disconnect_by_func(context_scim->slave,
                                          (void *)gtk_im_slave_commit_cb,
                                          (void *)context_scim);
+    g_signal_handlers_disconnect_by_func(context_scim->slave,
+                                         (void *)gtk_im_slave_preedit_changed_cb,
+                                         (void *)context_scim);
+    g_signal_handlers_disconnect_by_func(context_scim->slave,
+                                         (void *)gtk_im_slave_preedit_start_cb,
+                                         (void *)context_scim);
+    g_signal_handlers_disconnect_by_func(context_scim->slave,
+                                         (void *)gtk_im_slave_preedit_end_cb,
+                                         (void *)context_scim);
     g_object_unref(context_scim->slave);
 
     gtk_im_context_scim_finalize_partial (context_scim);
@@ -649,8 +683,15 @@ gtk_im_context_scim_filter_keypress (Gtk
         if (!_snooper_installed)
             ret = gtk_scim_key_snooper (0, event, 0);
 
-        if (!ret && context_scim->slave)
-            ret = gtk_im_context_filter_keypress (context_scim->slave, event);
+        if (context_scim->slave) {
+            if (!ret ) {
+                ret = gtk_im_context_filter_keypress (context_scim->slave, event);
+            }
+            else if (context_scim->slave_preedit) {
+                context_scim->slave_preedit = false;
+                gtk_im_context_reset (context_scim->slave);
+            }
+        }
     }
 
     return ret;
@@ -853,6 +894,11 @@ gtk_im_context_scim_get_preedit_string (
     SCIM_DEBUG_FRONTEND(1) << "gtk_im_context_scim_get_preedit_string...\n";
 
     GtkIMContextSCIM *context_scim = GTK_IM_CONTEXT_SCIM (context);
+    
+    if (context_scim->slave_preedit == true) {
+        gtk_im_context_get_preedit_string (context_scim->slave, str, attrs, cursor_pos);
+        return;
+    }
 
     if (context_scim && context_scim->impl && context_scim->impl->is_on) {
         String mbs = utf8_wcstombs (context_scim->impl->preedit_string);
@@ -1024,6 +1070,30 @@ gtk_im_slave_commit_cb (GtkIMContext    
     g_signal_emit_by_name(context_scim, "commit", str);
 }
 
+static void
+gtk_im_slave_preedit_changed_cb (GtkIMContext     *context,
+                        GtkIMContextSCIM *context_scim)
+{
+    context_scim->slave_preedit = true;
+    g_signal_emit_by_name(context_scim, "preedit-changed");
+}
+
+static void
+gtk_im_slave_preedit_start_cb (GtkIMContext     *context,
+                        GtkIMContextSCIM *context_scim)
+{
+    context_scim->slave_preedit = true;
+    g_signal_emit_by_name(context_scim, "preedit-start");
+}
+
+static void
+gtk_im_slave_preedit_end_cb (GtkIMContext     *context,
+                        GtkIMContextSCIM *context_scim)
+{
+    context_scim->slave_preedit = false;
+    g_signal_emit_by_name(context_scim, "preedit-end");
+}
+
 /* Panel Slot functions */
 static void
 panel_slot_reload_config (int context)
diff -up scim-1.4.7/extras/gtk2_immodule/gtkimcontextscim.h.fix-fallback scim-1.4.7/extras/gtk2_immodule/gtkimcontextscim.h
--- scim-1.4.7/extras/gtk2_immodule/gtkimcontextscim.h.fix-fallback	2008-03-03 16:18:44.000000000 +0800
+++ scim-1.4.7/extras/gtk2_immodule/gtkimcontextscim.h	2008-03-03 16:19:08.000000000 +0800
@@ -39,6 +39,7 @@ struct _GtkIMContextSCIM
 {
   GtkIMContext object;
   GtkIMContext *slave;
+  bool slave_preedit;
 
   GtkIMContextSCIMImpl *impl;
 


Index: scim.spec
===================================================================
RCS file: /cvs/pkgs/rpms/scim/devel/scim.spec,v
retrieving revision 1.106
retrieving revision 1.107
diff -u -r1.106 -r1.107
--- scim.spec	26 Feb 2008 03:04:05 -0000	1.106
+++ scim.spec	3 Mar 2008 08:37:14 -0000	1.107
@@ -3,7 +3,7 @@
 
 Name:      scim
 Version:   1.4.7
-Release:   12%{?dist}
+Release:   13%{?dist}
 Summary:   Smart Common Input Method platform
 
 License:   LGPLv2+
@@ -38,6 +38,7 @@
 Patch17:   scim-1.4.5-no-rpath-libdir.patch
 Patch18:   scim-1.4.7-ja-sinhala-236715.patch
 Patch19:   scim-1.4.7-remove-locale.patch
+Patch20:   scim-1.4.7-fix-fallback.patch
 
 %description
 SCIM is a user friendly and full featured input method user interface and
@@ -156,6 +157,7 @@
 %patch17 -p1 -b .17-rpath~
 %patch18 -p1 -b .18-sinhala~
 %patch19 -p1 -b .19-remove-locale~
+%patch20 -p1 -b .20-fix-fallback
 
 %if %{snapshot}
 ./bootstrap
@@ -293,6 +295,9 @@
 
 
 %changelog
+* Mon Mar 3 2008 Huang Peng <phuang at redhat.com> - 1.4.7-13
+- Fix fallback problem in gtkim module #235147.
+
 * Tue Feb 26 2008 Huang Peng <phuang at redhat.com> - 1.4.7-12
 - Update to scim.conf to use /usr/bin/scim to start scim processes.
 




More information about the fedora-extras-commits mailing list