drag-action: fix case where motion events are indefinitely disabled
authorLucas Rocha <lucasr@litl.com>
Mon, 17 Jan 2011 18:28:49 +0000 (18:28 +0000)
committerEmmanuele Bassi <ebassi@linux.intel.com>
Tue, 18 Jan 2011 14:48:14 +0000 (14:48 +0000)
When drag threshold is not reached, emit_drag_begin() is not called
causing default value of priv->motion_events_enabled (false) to used to
restore motion events enabled state in Clutter. This causes drag action
to indefinitely disable motion events. The current value of motion
events enabled state is now queried on button press which guarantees
that the state will be restored with the correct value in
emit_drag_end()

http://bugzilla.clutter-project.org/show_bug.cgi?id=2522

clutter/clutter-drag-action.c

index 0b1dce2..5c55408 100644 (file)
@@ -134,7 +134,6 @@ emit_drag_begin (ClutterDragAction *action,
 {
   ClutterDragActionPrivate *priv = action->priv;
 
-  priv->motion_events_enabled = clutter_get_motion_events_enabled ();
   clutter_set_motion_events_enabled (FALSE);
 
   g_signal_emit (action, drag_signals[DRAG_BEGIN], 0,
@@ -310,6 +309,8 @@ on_button_press (ClutterActor      *actor,
                                        &priv->transformed_press_x,
                                        &priv->transformed_press_y);
 
+  priv->motion_events_enabled = clutter_get_motion_events_enabled ();
+
   if (priv->x_drag_threshold == 0 || priv->y_drag_threshold == 0)
     emit_drag_begin (action, actor, event);
   else