From 3dd3c1ac34d9be02c780a008ce998848fb5f2898 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho <carlosg@gnome.org> Date: Fri, 10 Nov 2017 18:29:53 +0100 Subject: [PATCH] st: Make st_button_fake_release() work with touch press The st_button_release() call wouldn't happen because StButton does not set priv->button_mask on touch events. And if we make it called, we can't try to unset the device grab at the end of the function, as device/sequence are unset earlier on. --- src/st/st-button.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/src/st/st-button.c b/src/st/st-button.c index 38fe20759..8f5c4922f 100644 --- a/src/st/st-button.c +++ b/src/st/st-button.c @@ -765,7 +765,13 @@ st_button_fake_release (StButton *button) g_return_if_fail (ST_IS_BUTTON (button)); priv = st_button_get_instance_private (button); - if (priv->pressed) + if (priv->device && priv->press_sequence) + { + clutter_input_device_sequence_ungrab (priv->device, + priv->press_sequence); + } + + if (priv->pressed || priv->press_sequence) st_button_release (button, priv->device, priv->pressed, 0, NULL); @@ -775,14 +781,6 @@ st_button_fake_release (StButton *button) clutter_ungrab_pointer (); } - if (priv->device && - priv->press_sequence) - { - clutter_input_device_sequence_ungrab (priv->device, - priv->press_sequence); - priv->press_sequence = NULL; - } - priv->device = NULL; }