summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRay Strode <[email protected]>2012-07-17 19:41:12 +0000
committerSorokin Alexei <[email protected]>2016-06-18 15:12:28 +0300
commit8b76c13a915f6060f3bcfde9f0d5f4177c1f6114 (patch)
treeeee5a507dce4fb4d5f52ab56f3e90df075a6a7ae
parent4d0671b45247da95a4abd80743ad9be29019b852 (diff)
downloadmate-screensaver-8b76c13a915f6060f3bcfde9f0d5f4177c1f6114.tar.bz2
mate-screensaver-8b76c13a915f6060f3bcfde9f0d5f4177c1f6114.tar.xz
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
-rw-r--r--src/gs-window-x11.c18
1 files 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);