[gnome-shell] workspace: Move decision to show/hide chrome to clone
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] workspace: Move decision to show/hide chrome to clone
- Date: Thu, 10 Aug 2017 18:25:28 +0000 (UTC)
commit 6816aea906036f883ccbd3f17deee0fcd5deb2b5
Author: Florian Müllner <fmuellner gnome org>
Date: Wed Jul 19 02:29:16 2017 +0200
workspace: Move decision to show/hide chrome to clone
Currently the chrome layer decides itself which events on the window
clone should show or hide the chrome, which makes it harder to extent.
Instead, move the decision to the window clone by letting it emit
show/hide-chrome events when appropriate.
https://bugzilla.gnome.org/show_bug.cgi?id=783953
js/ui/workspace.js | 24 +++++++++++-------------
1 files changed, 11 insertions(+), 13 deletions(-)
---
diff --git a/js/ui/workspace.js b/js/ui/workspace.js
index 888b21d..4607f39 100644
--- a/js/ui/workspace.js
+++ b/js/ui/workspace.js
@@ -157,6 +157,12 @@ var WindowClone = new Lang.Class({
this.actor.connect('destroy', Lang.bind(this, this._onDestroy));
this.actor.connect('key-press-event', Lang.bind(this, this._onKeyPress));
+ this.actor.connect('enter-event', () => { this.emit('show-chrome'); });
+ this.actor.connect('key-focus-in', () => { this.emit('show-chrome'); });
+
+ this.actor.connect('leave-event', () => { this.emit('hide-chrome'); });
+ this.actor.connect('key-focus-out', () => { this.emit('hide-chrome'); });
+
this._draggable = DND.makeDraggable(this.actor,
{ restoreOnSuccess: true,
manualMode: true,
@@ -454,14 +460,8 @@ var WindowOverlay = new Lang.Class({
button.connect('clicked', Lang.bind(this, this._closeWindow));
windowClone.actor.connect('destroy', Lang.bind(this, this._onDestroy));
- windowClone.actor.connect('enter-event',
- Lang.bind(this, this._onEnter));
- windowClone.actor.connect('leave-event',
- Lang.bind(this, this._onLeave));
- windowClone.actor.connect('key-focus-in',
- Lang.bind(this, this._onEnter));
- windowClone.actor.connect('key-focus-out',
- Lang.bind(this, this._onLeave));
+ windowClone.connect('show-chrome', Lang.bind(this, this._onShowChrome));
+ windowClone.connect('hide-chrome', Lang.bind(this, this._onHideChrome));
this._windowAddedId = 0;
@@ -651,25 +651,23 @@ var WindowOverlay = new Lang.Class({
});
},
- _onEnter: function() {
+ _onShowChrome: function() {
// We might get enter events on the clone while the overlay is
// hidden, e.g. during animations, we ignore these events,
// as the close button will be shown as needed when the overlays
// are shown again
if (this._hidden)
- return Clutter.EVENT_PROPAGATE;
+ return;
this._animateVisible();
this.emit('show-close-button');
- return Clutter.EVENT_PROPAGATE;
},
- _onLeave: function() {
+ _onHideChrome: function() {
if (this._idleToggleCloseId == 0) {
this._idleToggleCloseId = Mainloop.timeout_add(750, Lang.bind(this,
this._idleToggleCloseButton));
GLib.Source.set_name_by_id(this._idleToggleCloseId, '[gnome-shell] this._idleToggleCloseButton');
}
- return Clutter.EVENT_PROPAGATE;
},
_idleToggleCloseButton: function() {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]