summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <matthiasc@src.gnome.org>2009-01-23 06:04:05 +0000
committerMatthias Clasen <matthiasc@src.gnome.org>2009-01-23 06:04:05 +0000
commit280eeb02e1a3c09737b1c370c7302efe65dd325b (patch)
tree20d5cb034fc6e7f6a12819a3544aa8b24933a394
parenta220373a55bcd5ee15fa553770042e932dcaa382 (diff)
downloadgdk-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--ChangeLog13
-rw-r--r--gtk/gtkimmodule.c5
-rw-r--r--gtk/gtktextview.c6
3 files changed, 22 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index cc317f603..35b0a817e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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