From 8b76c13a915f6060f3bcfde9f0d5f4177c1f6114 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 17 Jul 2012 19:41:12 +0000 Subject: Gtk3, gs-window-x11: defer setting bg color until realization commit adfc280 changed the drawing area associated with each monitors screensaver window to get realized early. That change is seemingly causing problems for users. This commit stops preemptively realizing the drawing areas, and instead makes the background color settings get applied reactively in response to realization. http://bugzilla.gnome.org/show_bug.cgi?id=679441 --- src/gs-window-x11.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/gs-window-x11.c b/src/gs-window-x11.c index d4bb564..b374715 100644 --- a/src/gs-window-x11.c +++ b/src/gs-window-x11.c @@ -2740,13 +2740,20 @@ create_info_bar (GSWindow *window) gtk_box_pack_end (GTK_BOX (window->priv->vbox), window->priv->info_bar, FALSE, FALSE, 0); } +#if GTK_CHECK_VERSION (3, 0, 0) static void -gs_window_init (GSWindow *window) +on_drawing_area_realized (GtkWidget *drawing_area) { -#if GTK_CHECK_VERSION (3, 0, 0) GdkRGBA black = { 0.0, 0.0, 0.0, 1.0 }; + gdk_window_set_background_rgba (gtk_widget_get_window (drawing_area), + &black); +} #endif + +static void +gs_window_init (GSWindow *window) +{ window->priv = GS_WINDOW_GET_PRIVATE (window); window->priv->geometry.x = -1; @@ -2789,9 +2796,10 @@ gs_window_init (GSWindow *window) #endif gtk_box_pack_start (GTK_BOX (window->priv->vbox), window->priv->drawing_area, TRUE, TRUE, 0); #if GTK_CHECK_VERSION (3, 0, 0) - gtk_widget_realize (window->priv->drawing_area); - gdk_window_set_background_rgba (gtk_widget_get_window (window->priv->drawing_area), &black); - + g_signal_connect (window->priv->drawing_area, + "realize", + G_CALLBACK (on_drawing_area_realized), + NULL); #endif create_info_bar (window); -- cgit v1.2.1