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/664
This commit is contained in:
parent
928b49705f
commit
d1880dc987
@ -326,6 +326,8 @@ var AllView = class AllView extends BaseAppView {
|
||||
this._folderSettings.connect('changed::folder-children', () => {
|
||||
Main.queueDeferredWork(this._redisplayWorkId);
|
||||
});
|
||||
|
||||
this._nEventBlockerInhibits = 0;
|
||||
}
|
||||
|
||||
_redisplay() {
|
||||
@ -668,6 +670,19 @@ 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() {
|
||||
if (this._nEventBlockerInhibits === 0)
|
||||
throw new Error('Not inhibited');
|
||||
|
||||
this._nEventBlockerInhibits--;
|
||||
this._eventBlocker.visible = this._nEventBlockerInhibits == 0;
|
||||
}
|
||||
};
|
||||
Signals.addSignalMethods(AllView.prototype);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user