diff --git a/ChangeLog b/ChangeLog index cc317f603e..35b0a817e2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2009-01-23 Matthias Clasen + + Bug 567124 – proposal to delay doing something related to + immodule until widgets realized + + Delay setting up immodules until the widget is realized. + Patch by Akira Tagoh + + * gtk/gtktextview.c: Don't set up im stuff if the widget + is not realized. + + * gtk/gtkimmodule.c: Assert that we have a window. + 2009-01-23 Matthias Clasen Skip Desktop if it equals the home folder diff --git a/gtk/gtkimmodule.c b/gtk/gtkimmodule.c index b347abd4f2..274166d362 100644 --- a/gtk/gtkimmodule.c +++ b/gtk/gtkimmodule.c @@ -671,6 +671,9 @@ _gtk_im_module_get_default_context_id (GdkWindow *client_window) GdkScreen *screen; GtkSettings *settings; + /* assertion to make sure all of the unexpected invocation is really gone. */ + g_return_val_if_fail (client_window != NULL, SIMPLE_ID); + if (!contexts_hash) gtk_im_module_initialize (); @@ -682,7 +685,7 @@ _gtk_im_module_get_default_context_id (GdkWindow *client_window) /* Check if the certain immodule is set in XSETTINGS. */ - if (client_window != NULL && GDK_IS_DRAWABLE (client_window)) + if (GDK_IS_DRAWABLE (client_window)) { screen = gdk_drawable_get_screen (GDK_DRAWABLE (client_window)); if (screen) diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index e9bc867a91..6d281fd5fc 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -2076,7 +2076,8 @@ gtk_text_view_update_im_spot_location (GtkTextView *text_view) */ area.width = 0; - gtk_im_context_set_cursor_location (text_view->im_context, &area); + if (GTK_WIDGET_REALIZED (text_view)) + gtk_im_context_set_cursor_location (text_view->im_context, &area); } static gboolean @@ -3837,6 +3838,9 @@ gtk_text_view_realize (GtkWidget *widget) tmp_list = tmp_list->next; } + + /* Ensure updating the spot location. */ + gtk_text_view_update_im_spot_location(text_view); } static void