[Xfce4-commits] <xfdesktop:xfce-4.8> Make sure the background is reloaded on compositing changes.

Jannis Pohlmann noreply at xfce.org
Sun Jan 30 19:22:03 CET 2011


Updating branch refs/heads/xfce-4.8
         to a9105314b1b40856795c8339a85718ca4b33c7a3 (commit)
       from a092b2bc1e4a4e227e6e82bf9635c96266197afd (commit)

commit a9105314b1b40856795c8339a85718ca4b33c7a3
Author: Nick Schermer <nick at xfce.org>
Date:   Wed Jan 19 12:14:53 2011 +0100

    Make sure the background is reloaded on compositing changes.
    
    When enabling or disabling the compositor in xfwm4, the
    background was grey most of the time, so make sure the
    background is reloaded when compositing changes by triggering
    a screen size changed signal (which does all we want).

 src/xfce-desktop.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/src/xfce-desktop.c b/src/xfce-desktop.c
index 0dab00d..f507132 100644
--- a/src/xfce-desktop.c
+++ b/src/xfce-desktop.c
@@ -400,6 +400,14 @@ screen_size_changed_cb(GdkScreen *gscreen, gpointer user_data)
 }
 
 static void
+screen_composited_changed_cb(GdkScreen *gscreen,
+                             gpointer user_data)
+{
+    /* fake a screen size changed, so the background is properly set */
+    screen_size_changed_cb(gscreen, user_data);
+}
+
+static void
 xfce_desktop_monitors_changed(GdkScreen *gscreen,
                               gpointer user_data)
 {
@@ -757,6 +765,8 @@ xfce_desktop_realize(GtkWidget *widget)
     
     g_signal_connect(G_OBJECT(desktop->priv->gscreen), "size-changed",
             G_CALLBACK(screen_size_changed_cb), desktop);
+    g_signal_connect(G_OBJECT(desktop->priv->gscreen), "composited-changed",
+            G_CALLBACK(screen_composited_changed_cb), desktop);
     
     gtk_widget_add_events(GTK_WIDGET(desktop), GDK_EXPOSURE_MASK);
     
@@ -795,6 +805,8 @@ xfce_desktop_unrealize(GtkWidget *widget)
     
     g_signal_handlers_disconnect_by_func(G_OBJECT(desktop->priv->gscreen),
             G_CALLBACK(screen_size_changed_cb), desktop);
+    g_signal_handlers_disconnect_by_func(G_OBJECT(desktop->priv->gscreen),
+            G_CALLBACK(screen_composited_changed_cb), desktop);
     
     groot = gdk_screen_get_root_window(desktop->priv->gscreen);
     gdk_property_delete(groot, gdk_atom_intern("XFCE_DESKTOP_WINDOW", FALSE));



More information about the Xfce4-commits mailing list