summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2012-12-10 10:25:19 +0000
committerRichard Hughes <richard@hughsie.com>2012-12-10 10:25:19 +0000
commit65670c71e37eab4e5c1ad4a6f5a7ed5b81c2966b (patch)
tree7baff17a0d7d3472630ba4ff4a8c21b37c278256
parent900f9eedac5adfe61eba673e70b57fa1a4dd9f56 (diff)
downloadcolord-gtk-65670c71e37eab4e5c1ad4a6f5a7ed5b81c2966b.tar.gz
Hide the mouse cursor when it goes over the sample widget
-rw-r--r--libcolord-gtk/cd-sample-widget.c58
-rw-r--r--libcolord-gtk/cd-self-test.c2
2 files changed, 59 insertions, 1 deletions
diff --git a/libcolord-gtk/cd-sample-widget.c b/libcolord-gtk/cd-sample-widget.c
index e91e19a..5a08ebb 100644
--- a/libcolord-gtk/cd-sample-widget.c
+++ b/libcolord-gtk/cd-sample-widget.c
@@ -105,6 +105,42 @@ cd_sample_widget_draw (GtkWidget *widget, cairo_t *cr)
}
/**
+ * cd_sample_window_enter_notify_event_cb:
+ **/
+static gboolean
+cd_sample_window_enter_notify_event_cb (GtkWidget *widget,
+ GdkEvent *event,
+ gpointer user_data)
+{
+ GdkCursor *cursor;
+ GdkWindow *window;
+
+ cursor = gdk_cursor_new (GDK_BLANK_CURSOR);
+ window = gtk_widget_get_window (widget);
+ gdk_window_set_cursor (window, cursor);
+ g_object_unref (cursor);
+ return TRUE;
+}
+
+/**
+ * cd_sample_window_leave_notify_event_cb:
+ **/
+static gboolean
+cd_sample_window_leave_notify_event_cb (GtkWidget *widget,
+ GdkEvent *event,
+ gpointer user_data)
+{
+ GdkCursor *cursor;
+ GdkWindow *window;
+
+ cursor = gdk_cursor_new (GDK_ARROW);
+ window = gtk_widget_get_window (widget);
+ gdk_window_set_cursor (window, cursor);
+ g_object_unref (cursor);
+ return TRUE;
+}
+
+/**
* cd_sample_widget_class_init:
**/
static void
@@ -128,6 +164,21 @@ cd_sample_widget_class_init (CdSampleWidgetClass *class)
}
/**
+ * cd_example_window_realize_cb:
+ **/
+static void
+cd_example_window_realize_cb (GtkWidget *widget, gpointer user_data)
+{
+ GdkWindow *window;
+
+ /* hide the mouse pointer when over the calibration widget */
+ window = gtk_widget_get_window (widget);
+ g_assert (window != NULL);
+ gdk_window_set_events (window, GDK_ENTER_NOTIFY_MASK |
+ GDK_LEAVE_NOTIFY_MASK);
+}
+
+/**
* cd_sample_widget_init:
**/
static void
@@ -135,6 +186,13 @@ cd_sample_widget_init (CdSampleWidget *sample)
{
sample->priv = CD_SAMPLE_WIDGET_GET_PRIVATE (sample);
cd_color_set_rgb (&sample->priv->color, 1.0, 1.0, 1.0);
+
+ g_signal_connect (sample, "realize",
+ G_CALLBACK (cd_example_window_realize_cb), NULL);
+ g_signal_connect (sample, "enter-notify-event",
+ G_CALLBACK (cd_sample_window_enter_notify_event_cb), NULL);
+ g_signal_connect (sample, "leave-notify-event",
+ G_CALLBACK (cd_sample_window_leave_notify_event_cb), NULL);
}
/**
diff --git a/libcolord-gtk/cd-self-test.c b/libcolord-gtk/cd-self-test.c
index 4da81cb..f1484ff 100644
--- a/libcolord-gtk/cd-self-test.c
+++ b/libcolord-gtk/cd-self-test.c
@@ -109,7 +109,7 @@ colord_sample_window_func (void)
gtk_window_present (window);
loop = g_main_loop_new (NULL, FALSE);
- g_timeout_add_seconds (2, (GSourceFunc) colord_sample_window_loop_cb, loop);
+ g_timeout_add_seconds (5, (GSourceFunc) colord_sample_window_loop_cb, loop);
g_main_loop_run (loop);
g_main_loop_unref (loop);