backgroundMenu: Release the click gesture if a grab operation begun

If an active grab on pointer events happens during multi-touch operations,
all non-pointer-emulating touches will be muted. This may leave the
Clutter.ClickAction incomplete if triggered by one of those sequences,
just to have a gesture take over and trigger a compositor grab, which would
leave the capture-event handler stuck eating events.

So listen for grab-op-begin from the display, and ensure the action is
released if such grab begins.
and the capture event handler stuck.
This commit is contained in:
Carlos Garnacho 2014-06-25 17:53:37 +02:00 committed by Jasper St. Pierre
parent a8b15dd2cf
commit 1ea2e2bcab

View File

@ -55,9 +55,14 @@ function addBackgroundMenu(actor, layoutManager) {
}); });
actor.add_action(clickAction); actor.add_action(clickAction);
let grabOpBeginId = global.display.connect('grab-op-begin', function () {
clickAction.release();
});
actor.connect('destroy', function() { actor.connect('destroy', function() {
actor._backgroundMenu.destroy(); actor._backgroundMenu.destroy();
actor._backgroundMenu = null; actor._backgroundMenu = null;
actor._backgroundManager = null; actor._backgroundManager = null;
global.display.disconnect(grabOpBeginId);
}); });
} }