[gnome-shell] st: Replace global grabs with input device grabs
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] st: Replace global grabs with input device grabs
- Date: Tue, 2 Jul 2019 01:24:22 +0000 (UTC)
commit d5a1a888d91b9456632a8393cf14c443e6df6a5b
Author: Jonas Dreßler <verdre v0yd nl>
Date: Sun Apr 14 18:32:37 2019 +0200
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;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]