diff options
author | Richard Hughes <richard@hughsie.com> | 2012-12-10 10:25:19 +0000 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2012-12-10 10:25:19 +0000 |
commit | 65670c71e37eab4e5c1ad4a6f5a7ed5b81c2966b (patch) | |
tree | 7baff17a0d7d3472630ba4ff4a8c21b37c278256 | |
parent | 900f9eedac5adfe61eba673e70b57fa1a4dd9f56 (diff) | |
download | colord-gtk-65670c71e37eab4e5c1ad4a6f5a7ed5b81c2966b.tar.gz |
Hide the mouse cursor when it goes over the sample widget
-rw-r--r-- | libcolord-gtk/cd-sample-widget.c | 58 | ||||
-rw-r--r-- | libcolord-gtk/cd-self-test.c | 2 |
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); |