From eca33d60be4da90f44ea2ab6c4b69a3433875c76 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Tue, 16 Sep 2008 17:47:30 +0000 Subject: [PATCH] don't access widget->window if the widget is not realized. 2008-09-16 Michael Natterer * gtk/gtkwidget.c (_gtk_widget_set,get_pointer_window): don't access widget->window if the widget is not realized. svn path=/trunk/; revision=21403 --- ChangeLog | 5 +++++ gtk/gtkwidget.c | 31 +++++++++++++++++++------------ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 140ce37852..1b30e71837 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-09-16 Michael Natterer + + * gtk/gtkwidget.c (_gtk_widget_set,get_pointer_window): don't + access widget->window if the widget is not realized. + 2008-09-16 Matthias Clasen Bug 551987 – GtkPaned redrawing problem diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 79a0f48bb1..bbb2bd6942 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -8059,20 +8059,23 @@ _gtk_widget_peek_colormap (void) * _gtk_widget_set_pointer_window: * @widget: a #GtkWidget. * @pointer_window: the new pointer window. - * + * * Sets pointer window for @widget. Does not ref @pointer_window. * Actually stores it on the #GdkScreen, but you don't need to know that. **/ void -_gtk_widget_set_pointer_window (GtkWidget *widget, - GdkWindow *pointer_window) +_gtk_widget_set_pointer_window (GtkWidget *widget, + GdkWindow *pointer_window) { - GdkScreen *screen; - g_return_if_fail (GTK_IS_WIDGET (widget)); - screen = gdk_drawable_get_screen (GDK_DRAWABLE (widget->window)); - g_object_set_qdata (G_OBJECT (screen), quark_pointer_window, pointer_window); + if (GTK_WIDGET_REALIZED (widget)) + { + GdkScreen *screen = gdk_drawable_get_screen (widget->window); + + g_object_set_qdata (G_OBJECT (screen), quark_pointer_window, + pointer_window); + } } /** @@ -8083,14 +8086,18 @@ _gtk_widget_set_pointer_window (GtkWidget *widget, * to, or %NULL. **/ GdkWindow * -_gtk_widget_get_pointer_window (GtkWidget *widget) +_gtk_widget_get_pointer_window (GtkWidget *widget) { - GdkScreen *screen; - g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL); - screen = gdk_drawable_get_screen (GDK_DRAWABLE (widget->window)); - return g_object_get_qdata (G_OBJECT (screen), quark_pointer_window); + if (GTK_WIDGET_REALIZED (widget)) + { + GdkScreen *screen = gdk_drawable_get_screen (widget->window); + + return g_object_get_qdata (G_OBJECT (screen), quark_pointer_window); + } + + return NULL; } static void