From 280eeb02e1a3c09737b1c370c7302efe65dd325b Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 23 Jan 2009 06:04:05 +0000 Subject: [PATCH] Don't set up im stuff if the widget is not realized. * gtk/gtktextview.c: Don't set up im stuff if the widget is not realized. * gtk/gtkimmodule.c: Assert that we have a window. svn path=/trunk/; revision=22193 --- ChangeLog | 13 +++++++++++++ gtk/gtkimmodule.c | 5 ++++- gtk/gtktextview.c | 6 +++++- 3 files changed, 22 insertions(+), 2 deletions(-) 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