summaryrefslogtreecommitdiff
path: root/gtk/gtkgesturelongpress.c
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2014-04-08 21:10:43 +0200
committerCarlos Garnacho <carlosg@gnome.org>2014-05-23 19:54:26 +0200
commitc506dfe600b5556290e855e81ea4ec3798da8c66 (patch)
treec990feca767fb196def5a5c69c49896947db498c /gtk/gtkgesturelongpress.c
parent3cc9543e647161abfdf894f312ef893c69e61da5 (diff)
downloadgtk+-c506dfe600b5556290e855e81ea4ec3798da8c66.tar.gz
longpress: fix reentrancy on ::reset()
Diffstat (limited to 'gtk/gtkgesturelongpress.c')
-rw-r--r--gtk/gtkgesturelongpress.c14
1 files changed, 3 insertions, 11 deletions
diff --git a/gtk/gtkgesturelongpress.c b/gtk/gtkgesturelongpress.c
index 72637765a0..c833cead8b 100644
--- a/gtk/gtkgesturelongpress.c
+++ b/gtk/gtkgesturelongpress.c
@@ -130,9 +130,9 @@ gtk_gesture_long_press_update (GtkGesture *gesture,
{
if (priv->timeout_id)
{
- g_signal_emit (gesture, signals[CANCELLED], 0);
g_source_remove (priv->timeout_id);
priv->timeout_id = 0;
+ g_signal_emit (gesture, signals[CANCELLED], 0);
}
priv->cancelled = TRUE;
@@ -149,10 +149,9 @@ gtk_gesture_long_press_end (GtkGesture *gesture,
if (priv->timeout_id)
{
- if (!priv->triggered)
- g_signal_emit (gesture, signals[CANCELLED], 0);
g_source_remove (priv->timeout_id);
priv->timeout_id = 0;
+ g_signal_emit (gesture, signals[CANCELLED], 0);
}
priv->cancelled = priv->triggered = FALSE;
@@ -163,15 +162,8 @@ gtk_gesture_long_press_sequence_state_changed (GtkGesture *gesture,
GdkEventSequence *sequence,
GtkEventSequenceState state)
{
- GtkGestureLongPressPrivate *priv;
-
- priv = gtk_gesture_long_press_get_instance_private (GTK_GESTURE_LONG_PRESS (gesture));
-
if (state == GTK_EVENT_SEQUENCE_DENIED)
- {
- gtk_gesture_long_press_end (gesture, sequence);
- priv->cancelled = TRUE;
- }
+ gtk_gesture_long_press_end (gesture, sequence);
}
static void