[gnome-color-manager] Hide the mouse cursor when it appears over the GcmSampleWindow
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-color-manager] Hide the mouse cursor when it appears over the GcmSampleWindow
- Date: Fri, 6 Aug 2010 09:11:22 +0000 (UTC)
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]