diff -Nur gtk+-2.2.4-bak/gtk/gtkentry.c gtk+-2.2.4/gtk/gtkentry.c --- gtk+-2.2.4-bak/gtk/gtkentry.c 2003-09-04 04:50:07.000000000 +0900 +++ gtk+-2.2.4/gtk/gtkentry.c 2003-09-05 11:44:34.000000000 +0900 @@ -179,6 +179,8 @@ static void gtk_entry_drag_data_delete (GtkWidget *widget, GdkDragContext *context); +static GtkIMContext *gtk_entry_get_im_context(GtkWidget *widget); + /* GtkEditable method implementations */ static void gtk_entry_insert_text (GtkEditable *editable, @@ -424,6 +426,8 @@ widget_class->popup_menu = gtk_entry_popup_menu; + widget_class->get_im_context = gtk_entry_get_im_context; + class->move_cursor = gtk_entry_move_cursor; class->insert_at_cursor = gtk_entry_insert_at_cursor; class->delete_from_cursor = gtk_entry_delete_from_cursor; @@ -4255,6 +4259,13 @@ gtk_editable_delete_text (editable, sel_start, sel_end); } + +static GtkIMContext * +gtk_entry_get_im_context(GtkWidget *widget) +{ + return GTK_ENTRY(widget)->im_context; +} + /* We display the cursor when * * - the selection is empty, AND diff -Nur gtk+-2.2.4-bak/gtk/gtktextview.c gtk+-2.2.4/gtk/gtktextview.c --- gtk+-2.2.4-bak/gtk/gtktextview.c 2003-08-26 09:06:09.000000000 +0900 +++ gtk+-2.2.4/gtk/gtktextview.c 2003-09-05 11:45:08.000000000 +0900 @@ -227,6 +227,8 @@ guint info, guint time); +static GtkIMContext *gtk_text_view_get_im_context(GtkWidget *widget); + static void gtk_text_view_set_scroll_adjustments (GtkTextView *text_view, GtkAdjustment *hadj, GtkAdjustment *vadj); @@ -521,6 +523,8 @@ widget_class->drag_data_received = gtk_text_view_drag_data_received; widget_class->popup_menu = gtk_text_view_popup_menu; + + widget_class->get_im_context = gtk_text_view_get_im_context; container_class->add = gtk_text_view_add; container_class->remove = gtk_text_view_remove; @@ -5905,6 +5909,12 @@ time); } +static GtkIMContext * +gtk_text_view_get_im_context (GtkWidget *widget) +{ + return GTK_TEXT_VIEW(widget)->im_context; +} + static GtkAdjustment* get_hadjustment (GtkTextView *text_view) { diff -Nur gtk+-2.2.4-bak/gtk/gtkwidget.c gtk+-2.2.4/gtk/gtkwidget.c --- gtk+-2.2.4-bak/gtk/gtkwidget.c 2003-08-08 06:03:10.000000000 +0900 +++ gtk+-2.2.4/gtk/gtkwidget.c 2003-09-05 11:45:17.000000000 +0900 @@ -466,6 +466,9 @@ klass->no_expose_event = NULL; + /* for getting GtkIMContext */ + klass->get_im_context = NULL; + g_object_class_install_property (gobject_class, PROP_NAME, g_param_spec_string ("name", @@ -6999,3 +7002,17 @@ return gtk_clipboard_get_for_display (gtk_widget_get_display (widget), selection); } + +GtkIMContext * +gtk_widget_get_im_context(GtkWidget *widget) +{ + GtkWidgetClass *klass; + + g_return_val_if_fail (GTK_IS_WIDGET(widget), NULL); + + klass = GTK_WIDGET_GET_CLASS (widget); + if (klass->get_im_context) + return klass->get_im_context (widget); + + return NULL; +} diff -Nur gtk+-2.2.4-bak/gtk/gtkwidget.h gtk+-2.2.4/gtk/gtkwidget.h --- gtk+-2.2.4-bak/gtk/gtkwidget.h 2003-08-12 00:18:16.000000000 +0900 +++ gtk+-2.2.4/gtk/gtkwidget.h 2003-09-05 11:45:31.000000000 +0900 @@ -34,6 +34,7 @@ #include #include #include +#include #ifdef __cplusplus extern "C" { @@ -402,6 +403,10 @@ void (* screen_changed) (GtkWidget *widget, GdkScreen *previous_screen); + + /* for getting GtkIMContext */ + GtkIMContext *(* get_im_context) (GtkWidget *widget); + /* Padding for future expansion */ void (*_gtk_reserved1) (void); void (*_gtk_reserved2) (void); @@ -409,7 +414,6 @@ void (*_gtk_reserved4) (void); void (*_gtk_reserved5) (void); void (*_gtk_reserved6) (void); - void (*_gtk_reserved7) (void); }; struct _GtkWidgetAuxInfo @@ -601,6 +605,9 @@ /* Accessibility support */ AtkObject* gtk_widget_get_accessible (GtkWidget *widget); +/* for GtkIMContext */ +GtkIMContext *gtk_widget_get_im_context (GtkWidget *widget); + /* The following functions must not be called on an already * realized widget. Because it is possible that somebody * can call get_colormap() or get_visual() and save the