diff -u /tmp/gtk+-2.8.9/gtk/gtkimcontext.c gtk/gtkimcontext.c
--- /tmp/gtk+-2.8.9/gtk/gtkimcontext.c	2005-03-20 16:01:22.000000000 +0900
+++ gtk/gtkimcontext.c	2006-07-02 23:08:16.000000000 +0900
@@ -554,5 +554,31 @@
   return result;
 }
 
+/**
+ * gtk_im_context_set_im_mode
+ * @context: a #GtkIMContext
+ * @mode: mode
+ *
+ * To be written.
+ * Following 4 values may be accepted
+ *  "auto", "active", "inactive", "disabled"
+ * language or immodule dependent modes will be added.
+ *
+ * Return value: %TRUE if the operation was accepted
+ **/
+gboolean
+gtk_im_context_set_im_mode (GtkIMContext *context,
+			    const gchar  *mode)
+{
+  GtkIMContextClass *klass;
+  
+  g_return_val_if_fail (GTK_IS_IM_CONTEXT (context), FALSE);
+
+  klass = GTK_IM_CONTEXT_GET_CLASS (context);
+  if (klass->set_im_mode)
+    klass->set_im_mode (context, mode);
+  return FALSE;
+}
+
 #define __GTK_IM_CONTEXT_C__
 #include "gtkaliasdef.c"
diff -u /tmp/gtk+-2.8.9/gtk/gtkimcontext.h gtk/gtkimcontext.h
--- /tmp/gtk+-2.8.9/gtk/gtkimcontext.h	2005-03-20 16:01:22.000000000 +0900
+++ gtk/gtkimcontext.h	2006-07-02 22:52:27.000000000 +0900
@@ -82,6 +82,8 @@
   gboolean (*get_surrounding)     (GtkIMContext   *context,
 				   gchar         **text,
 				   gint           *cursor_index);
+  gboolean (*set_im_mode)         (GtkIMContext   *context,
+				   const gchar    *mode);
 
   /* Padding for future expansion */
   void (*_gtk_reserved1) (void);
@@ -119,6 +121,8 @@
 gboolean gtk_im_context_delete_surrounding  (GtkIMContext   *context,
 					     gint            offset,
 					     gint            n_chars);
+gboolean gtk_im_context_set_im_mode         (GtkIMContext   *context,
+					     const gchar *mode);
 
 G_END_DECLS
 
diff -u /tmp/gtk+-2.8.9/gtk/gtkimmulticontext.c gtk/gtkimmulticontext.c
--- /tmp/gtk+-2.8.9/gtk/gtkimmulticontext.c	2005-03-20 16:01:22.000000000 +0900
+++ gtk/gtkimmulticontext.c	2006-07-02 23:00:03.000000000 +0900
@@ -86,6 +86,8 @@
 							     gint               offset,
 							     gint               n_chars,
 							     GtkIMMulticontext *multicontext);
+static gboolean gtk_im_multicontext_set_im_mode             (GtkIMContext            *context,
+							     const char              *mode);
 static GtkIMContextClass *parent_class;
 
 static const gchar *global_context_id = NULL;
@@ -136,6 +138,7 @@
   im_context_class->set_use_preedit = gtk_im_multicontext_set_use_preedit;
   im_context_class->set_surrounding = gtk_im_multicontext_set_surrounding;
   im_context_class->get_surrounding = gtk_im_multicontext_get_surrounding;
+  im_context_class->set_im_mode = gtk_im_multicontext_set_im_mode;
 
   gobject_class->finalize = gtk_im_multicontext_finalize;
 }
@@ -567,5 +570,16 @@
   g_free (contexts);
 }
 
+static gboolean
+gtk_im_multicontext_set_im_mode (GtkIMContext   *context,
+				 const gchar    *mode)
+{
+  GtkIMMulticontext *multicontext = GTK_IM_MULTICONTEXT (context);
+  GtkIMContext *slave = gtk_im_multicontext_get_slave (multicontext);
+
+  if (slave)
+    return gtk_im_context_set_im_mode (slave, mode);
+  return FALSE;
+}
 #define __GTK_IM_MULTICONTEXT_C__
 #include "gtkaliasdef.c"
Common subdirectories: /tmp/gtk+-2.8.9/gtk/stock-icons and gtk/stock-icons
Common subdirectories: /tmp/gtk+-2.8.9/gtk/theme-bits and gtk/theme-bits
Common subdirectories: /tmp/gtk+-2.8.9/gtk/xdgmime and gtk/xdgmime
