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