[gnome-settings-daemon] Make 'locate pointer' deal with wm/cm changes



commit fa240246ed384ef1d07615302bd9c8195e539a7f
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Jun 15 01:52:46 2009 -0400

    Make 'locate pointer' deal with wm/cm changes
    
    This fixes bug 585209.

 plugins/mouse/gsd-locate-pointer.c |   22 ++++++++++++++++++++--
 1 files changed, 20 insertions(+), 2 deletions(-)
---
diff --git a/plugins/mouse/gsd-locate-pointer.c b/plugins/mouse/gsd-locate-pointer.c
index 3d61cad..121cdc8 100644
--- a/plugins/mouse/gsd-locate-pointer.c
+++ b/plugins/mouse/gsd-locate-pointer.c
@@ -195,6 +195,22 @@ set_transparent_shape (GdkWindow *window)
 }
 
 static void
+unset_transparent_shape (GdkWindow *window)
+{
+  gdk_window_shape_combine_mask (data->window, NULL, 0, 0);
+}
+
+static void
+composited_changed (GtkWidget            *widget,
+                    GsdLocatePointerData *data)
+{
+  if (!gtk_widget_is_composited (widget))
+    set_transparent_shape (data->window);
+  else
+    unset_transparent_shape (data->window);
+}
+
+static void
 timeline_finished_cb (GsdTimeline *timeline,
 		      gpointer     user_data)
 {
@@ -317,8 +333,10 @@ gsd_locate_pointer (GdkScreen *screen)
 
   data->progress = 0.;
 
-  if (!gtk_widget_is_composited (data->widget))
-    set_transparent_shape (data->window);
+  g_signal_connect (data->widget, "composited-changed",
+                    G_CALLBACK (composited_changed), data);
+
+  composited_changed (data->widget, data);
 
   gdk_window_show (data->window);
   move_locate_pointer_window (data, screen);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]