From 23191ec2390c504e204b4e03b97b0744c2f3dc0f Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Fri, 28 Jun 2019 19:44:20 -0300 Subject: [PATCH] appDisplay: Add event blocker inhibition API The event blocker is an actor that is added in between the icon grid and the app folder popup in order to guarantee that clicking outside the app folder will collapse it. However, the next patch will require allowing dragging events to be passed to folder icons, and the event blocker gets in our way here, preventing drag n' drop to work properly. Add an API to inhibit the event blocker. This API will be used by the app folders while an item is dragged. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/603 --- js/ui/appDisplay.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index 3cb71f1d2..94a7c7474 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -338,6 +338,8 @@ var AllView = class AllView extends BaseAppView { this._folderSettings.connect('changed::folder-children', () => { Main.queueDeferredWork(this._redisplayWorkId); }); + + this._nEventBlockerInhibits = 0; } _itemNameChanged(item) { @@ -672,6 +674,16 @@ var AllView = class AllView extends BaseAppView { for (let i = 0; i < this.folderIcons.length; i++) this.folderIcons[i].adaptToSize(availWidth, availHeight); } + + inhibitEventBlocker() { + this._nEventBlockerInhibits++; + this._eventBlocker.visible = this._nEventBlockerInhibits == 0; + } + + uninhibitEventBlocker() { + this._nEventBlockerInhibits--; + this._eventBlocker.visible = this._nEventBlockerInhibits == 0; + } }; Signals.addSignalMethods(AllView.prototype);