diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/widgets/gimp/gimpcolorwheel.c | 34 |
1 files changed, 27 insertions, 7 deletions
diff --git a/src/widgets/gimp/gimpcolorwheel.c b/src/widgets/gimp/gimpcolorwheel.c index e7ea6bf7b..8a1457db5 100644 --- a/src/widgets/gimp/gimpcolorwheel.c +++ b/src/widgets/gimp/gimpcolorwheel.c @@ -640,7 +640,7 @@ compute_v (GimpColorWheel *wheel, static void set_cross_grab (GimpColorWheel *wheel, - guint32 time) + GdkEvent *event) { GimpColorWheelPrivate *priv = wheel->priv; GdkCursor *cursor; @@ -649,14 +649,28 @@ set_cross_grab (GimpColorWheel *wheel, gdk_cursor_new_for_display (gtk_widget_get_display (GTK_WIDGET (wheel)), GDK_CROSSHAIR); - gdk_device_grab (gtk_get_current_event_device(), + GdkDevice *device = gtk_get_current_event_device(); +#if GTK_CHECK_VERSION(3,20,0) + GdkSeat *seat = gdk_device_get_seat(device); + gdk_seat_grab (seat, + priv->window, + GDK_SEAT_CAPABILITY_ALL_POINTING, + FALSE, + cursor, + event, + NULL, + NULL); +#else + gdk_device_grab (device, priv->window, GDK_OWNERSHIP_NONE, FALSE, GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_RELEASE_MASK, - cursor, time); + cursor, event->time); +#endif + g_object_unref (cursor); } @@ -688,7 +702,7 @@ gimp_color_wheel_button_press (GtkWidget *widget, if (is_in_ring (wheel, x, y)) { priv->mode = DRAG_H; - set_cross_grab (wheel, event->time); + set_cross_grab (wheel, (GdkEvent *)event); gimp_color_wheel_set_color (wheel, compute_v (wheel, x, y), @@ -706,7 +720,7 @@ gimp_color_wheel_button_press (GtkWidget *widget, gdouble s, v; priv->mode = DRAG_SV; - set_cross_grab (wheel, event->time); + set_cross_grab (wheel, (GdkEvent *)event); compute_sv (wheel, x, y, &s, &v); gimp_color_wheel_set_color (wheel, priv->h, s, v); @@ -757,8 +771,14 @@ gimp_color_wheel_button_release (GtkWidget *widget, else g_assert_not_reached (); - gdk_device_ungrab (gtk_get_current_event_device(), - event->time); + GdkDevice *device = gtk_get_current_event_device(); +#if GTK_CHECK_VERSION(3,20,0) + GdkSeat *seat = gdk_device_get_seat(device); + gdk_seat_ungrab (seat); +#else + gdk_device_ungrab (device, + (GdkEvent *)event); +#endif return TRUE; } |
