From d5a1a888d91b9456632a8393cf14c443e6df6a5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Dre=C3=9Fler?= Date: Sun, 14 Apr 2019 18:32:37 +0200 Subject: [PATCH] st: Replace global grabs with input device grabs Global grabs are being removed from Clutter in favour of input device grabs, so only grab the input device instead and replace priv->grabbed with checks for priv->grab_device. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/495 --- src/st/st-button.c | 6 +++--- src/st/st-scroll-bar.c | 18 ++++++++++-------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/st/st-button.c b/src/st/st-button.c index 5a70f4e83..fb7ccd80d 100644 --- a/src/st/st-button.c +++ b/src/st/st-button.c @@ -192,7 +192,7 @@ st_button_button_press (ClutterActor *actor, if (priv->button_mask & mask) { if (priv->grabbed == 0) - clutter_grab_pointer (actor); + clutter_input_device_grab (device, actor); priv->grabbed |= mask; st_button_press (button, device, mask, NULL); @@ -221,7 +221,7 @@ st_button_button_release (ClutterActor *actor, priv->grabbed &= ~mask; if (priv->grabbed == 0) - clutter_ungrab_pointer (); + clutter_input_device_ungrab (device); return TRUE; } @@ -787,7 +787,7 @@ st_button_fake_release (StButton *button) if (priv->grabbed) { priv->grabbed = 0; - clutter_ungrab_pointer (); + clutter_input_device_ungrab (priv->device); } priv->device = NULL; diff --git a/src/st/st-scroll-bar.c b/src/st/st-scroll-bar.c index 64d687bd7..135da76cf 100644 --- a/src/st/st-scroll-bar.c +++ b/src/st/st-scroll-bar.c @@ -49,10 +49,11 @@ struct _StScrollBarPrivate { StAdjustment *adjustment; - gboolean grabbed; gfloat x_origin; gfloat y_origin; + ClutterInputDevice *grab_device; + ClutterActor *trough; ClutterActor *handle; @@ -601,13 +602,13 @@ static void stop_scrolling (StScrollBar *bar) { StScrollBarPrivate *priv = st_scroll_bar_get_instance_private (bar); - if (!priv->grabbed) + if (!priv->grab_device) return; st_widget_remove_style_pseudo_class (ST_WIDGET (priv->handle), "active"); - clutter_ungrab_pointer (); - priv->grabbed = FALSE; + clutter_input_device_ungrab (priv->grab_device); + priv->grab_device = NULL; g_signal_emit (bar, signals[SCROLL_STOP], 0); } @@ -617,7 +618,7 @@ handle_motion_event_cb (ClutterActor *trough, StScrollBar *bar) { StScrollBarPrivate *priv = st_scroll_bar_get_instance_private (bar); - if (!priv->grabbed) + if (!priv->grab_device) return FALSE; move_slider (bar, event->x, event->y); @@ -642,6 +643,7 @@ handle_button_press_event_cb (ClutterActor *actor, StScrollBar *bar) { StScrollBarPrivate *priv = st_scroll_bar_get_instance_private (bar); + ClutterInputDevice *device = clutter_event_get_device ((ClutterEvent*) event); if (event->button != 1) return FALSE; @@ -659,10 +661,10 @@ handle_button_press_event_cb (ClutterActor *actor, priv->x_origin += clutter_actor_get_x (priv->trough); priv->y_origin += clutter_actor_get_y (priv->trough); - g_assert (!priv->grabbed); + g_assert (!priv->grab_device); - clutter_grab_pointer (priv->handle); - priv->grabbed = TRUE; + clutter_input_device_grab (device, priv->handle); + priv->grab_device = device; g_signal_emit (bar, signals[SCROLL_START], 0); return TRUE;