workspace: Keep track of the dragging touch sequence

draggable.startDrag() is called directly here (i.e. manualMode is not set),
we must keep track of the touch event and pass it to startDrag() then.

https://bugzilla.gnome.org/show_bug.cgi?id=756748
This commit is contained in:
Carlos Garnacho 2015-10-16 18:32:42 +02:00
parent 508a13ae72
commit 9d203ddc0f

View File

@ -361,6 +361,9 @@ const WindowClone = new Lang.Class({
// a long-press canceled when the pointer movement // a long-press canceled when the pointer movement
// exceeds dnd-drag-threshold to manually start the drag // exceeds dnd-drag-threshold to manually start the drag
if (state == Clutter.LongPressState.CANCEL) { if (state == Clutter.LongPressState.CANCEL) {
let event = Clutter.get_current_event();
this._dragTouchSequence = event.get_event_sequence();
// A click cancels a long-press before any click handler is // A click cancels a long-press before any click handler is
// run - make sure to not start a drag in that case // run - make sure to not start a drag in that case
Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this,
@ -369,7 +372,7 @@ const WindowClone = new Lang.Class({
return; return;
let [x, y] = action.get_coords(); let [x, y] = action.get_coords();
action.release(); action.release();
this._draggable.startDrag(x, y, global.get_current_time()); this._draggable.startDrag(x, y, global.get_current_time(), this._dragTouchSequence);
})); }));
} }
return true; return true;