diff options
author | Matthias Clasen <matthiasc@src.gnome.org> | 2009-01-23 06:04:05 +0000 |
---|---|---|
committer | Matthias Clasen <matthiasc@src.gnome.org> | 2009-01-23 06:04:05 +0000 |
commit | 280eeb02e1a3c09737b1c370c7302efe65dd325b (patch) | |
tree | 20d5cb034fc6e7f6a12819a3544aa8b24933a394 | |
parent | a220373a55bcd5ee15fa553770042e932dcaa382 (diff) | |
download | gdk-pixbuf-280eeb02e1a3c09737b1c370c7302efe65dd325b.tar.gz |
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
-rw-r--r-- | ChangeLog | 13 | ||||
-rw-r--r-- | gtk/gtkimmodule.c | 5 | ||||
-rw-r--r-- | gtk/gtktextview.c | 6 |
3 files changed, 22 insertions, 2 deletions
@@ -1,5 +1,18 @@ 2009-01-23 Matthias Clasen <mclasen@redhat.com> + 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 <mclasen@redhat.com> + Skip Desktop if it equals the home folder Patch by Christian Dywan diff --git a/gtk/gtkimmodule.c b/gtk/gtkimmodule.c index b347abd4f..274166d36 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 e9bc867a9..6d281fd5f 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 |