diff --git a/js/ui/appDisplay.js b/js/ui/appDisplay.js index f18745f6c..7ae0b08f0 100644 --- a/js/ui/appDisplay.js +++ b/js/ui/appDisplay.js @@ -87,7 +87,8 @@ AllAppDisplay.prototype = { Main.queueDeferredWork(this._workId); })); - let bin = new St.BoxLayout({ style_class: 'all-app-controls-panel' }); + let bin = new St.BoxLayout({ style_class: 'all-app-controls-panel', + reactive: true }); this.actor = new St.BoxLayout({ style_class: 'all-app', vertical: true }); this.actor.hide(); diff --git a/js/ui/overview.js b/js/ui/overview.js index 1f2ca9bf2..1f0ee4b9a 100644 --- a/js/ui/overview.js +++ b/js/ui/overview.js @@ -372,9 +372,8 @@ Overview.prototype = { })); } - this._transparentBackground.set_position(this._paneContainer.x, this._paneContainer.y); - this._transparentBackground.set_size(primary.width - this._paneContainer.x, - this._paneContainer.height); + this._transparentBackground.set_position(primary.x, primary.y); + this._transparentBackground.set_size(primary.width, primary.height); }, @@ -391,10 +390,17 @@ Overview.prototype = { this._transparentBackground.raise_top(); this._paneContainer.raise_top(); this._paneContainer.show(); + this._paneReady = false; if (backgroundEventId != null) this._transparentBackground.disconnect(backgroundEventId); - backgroundEventId = this._transparentBackground.connect('button-release-event', Lang.bind(this, function () { - this._activeDisplayPane.close(); + backgroundEventId = this._transparentBackground.connect('captured-event', Lang.bind(this, function (actor, event) { + if (event.get_source() != this._transparentBackground) + return false; + if (event.type() == Clutter.EventType.BUTTON_PRESS) + this._paneReady = true; + if (event.type() == Clutter.EventType.BUTTON_RELEASE + && this._paneReady) + this._activeDisplayPane.close(); return true; })); this._workspaces.actor.opacity = 64;