[gnome-color-manager] Hide the mouse cursor when it appears over the GcmSampleWindow



commit fee601f235f6c44742b0d2c6bdef017d0521d0fc
Author: Richard Hughes <richard hughsie com>
Date:   Thu Aug 5 15:27:07 2010 +0100

    Hide the mouse cursor when it appears over the GcmSampleWindow

 libcolor-glib/gcm-sample-window.c |   48 +++++++++++++++++++++++++++++++++++++
 1 files changed, 48 insertions(+), 0 deletions(-)
---
diff --git a/libcolor-glib/gcm-sample-window.c b/libcolor-glib/gcm-sample-window.c
index f1a681d..4373737 100644
--- a/libcolor-glib/gcm-sample-window.c
+++ b/libcolor-glib/gcm-sample-window.c
@@ -161,6 +161,43 @@ gcm_sample_window_class_init (GcmSampleWindowClass *klass)
 }
 
 /**
+ * gcm_sample_window_enter_notify_cb:
+ **/
+static gboolean
+gcm_sample_window_enter_notify_cb (GtkWidget *widget, GdkEventCrossing *event, GcmSampleWindow *sample_window)
+{
+	GdkCursor *cursor;
+
+	/* hide cursor */
+	cursor = gdk_cursor_new_for_display (gdk_display_get_default (), GDK_BLANK_CURSOR);
+	gdk_window_set_cursor (gtk_widget_get_window (widget), cursor);
+	gdk_cursor_unref (cursor);
+
+	return FALSE;
+}
+
+/**
+ * gcm_sample_window_leave_notify_cb:
+ **/
+static gboolean
+gcm_sample_window_leave_notify_cb (GtkWidget *widget, GdkEventCrossing *event,
+				   GcmSampleWindow *sample_window)
+{
+	/* restore cursor */
+	gdk_window_set_cursor (gtk_widget_get_window (widget), NULL);
+	return FALSE;
+}
+
+static gboolean
+gcm_sample_window_visibility_notify_cb (GtkWidget *widget, GdkEventVisibility *event,
+					GcmSampleWindow *sample_window)
+{
+	/* reshow it */
+	gtk_window_present (GTK_WINDOW (widget));
+	return TRUE;
+}
+
+/**
  * gcm_sample_window_init:
  **/
 static void
@@ -180,6 +217,17 @@ gcm_sample_window_init (GcmSampleWindow *sample_window)
 	gtk_widget_set_size_request (sample_window->priv->image, 400, 400);
 	gtk_widget_show_all (vbox);
 
+	/* be clever and allow the colorimeter to do it's job */
+	g_signal_connect (window, "enter-notify-event",
+			  G_CALLBACK(gcm_sample_window_enter_notify_cb),
+			  sample_window);
+	g_signal_connect (window, "leave-notify-event",
+			  G_CALLBACK(gcm_sample_window_leave_notify_cb),
+			  sample_window);
+	g_signal_connect (window, "visibility-notify-event",
+			  G_CALLBACK(gcm_sample_window_visibility_notify_cb),
+			  sample_window);
+
 	/* show on all virtual desktops */
 	gtk_window_stick (window);
 }



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