[gnome-shell/wip/fmuellner/overview-tweaks: 8/10] 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/wip/fmuellner/overview-tweaks: 8/10] workspace: Move decision to show/hide chrome to clone
- Date: Thu, 20 Jul 2017 12:19:53 +0000 (UTC)
commit b2ca9524604ecd5de72ad4e1c9bb775d0d75487f
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 7c1c666..4be96d9 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]