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

Nick Schermer noreply at xfce.org
Wed Jan 19 12:18:02 CET 2011


Updating branch refs/heads/master
         to 45b369754f87159fd67ba4d27b925a1c34d53b6b (commit)
       from 19dac70c4d99a8ae51a1dad34cf68d5fe269a9dc (commit)

commit 45b369754f87159fd67ba4d27b925a1c34d53b6b
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