[gnome-shell/gnome-3-16] layout: Set initial visibility of fullscreen-tracking chrome
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell/gnome-3-16] layout: Set initial visibility of fullscreen-tracking chrome
- Date: Thu, 21 May 2015 12:01:49 +0000 (UTC)
commit 4db34fca36ae8de643edd3210adaacec22da1bb4
Author: Florian Müllner <fmuellner gnome org>
Date: Thu May 14 17:33:24 2015 +0200
layout: Set initial visibility of fullscreen-tracking chrome
When chrome is added with the trackFullscreen parameter, the actor's
visibility will be updated automatically whenever its monitor's
fullscreen state changes. However as we currently ignore the fullscreen
state at the time the chrome is added, the initial visibility may well
be incorrect - fix this by updating the initial visibility as necessary.
https://bugzilla.gnome.org/show_bug.cgi?id=749383
js/ui/layout.js | 25 ++++++++++++-------------
1 files changed, 12 insertions(+), 13 deletions(-)
---
diff --git a/js/ui/layout.js b/js/ui/layout.js
index 204665f..65302e7 100644
--- a/js/ui/layout.js
+++ b/js/ui/layout.js
@@ -837,6 +837,7 @@ const LayoutManager = new Lang.Class({
// need to connect to 'destroy' too.
this._trackedActors.push(actorData);
+ this._updateActorVisibility(actorData);
this._queueUpdateRegions();
},
@@ -855,25 +856,23 @@ const LayoutManager = new Lang.Class({
this._queueUpdateRegions();
},
+ _updateActorVisibility: function(actorData) {
+ if (!actorData.trackFullscreen)
+ return;
+
+ let monitor = this.findMonitorForActor(actorData.actor);
+ actorData.actor.visible = !(global.window_group.visible &&
+ monitor &&
+ monitor.inFullscreen);
+ },
+
_updateVisibility: function() {
let windowsVisible = Main.sessionMode.hasWindows && !this._inOverview;
global.window_group.visible = windowsVisible;
global.top_window_group.visible = windowsVisible;
- for (let i = 0; i < this._trackedActors.length; i++) {
- let actorData = this._trackedActors[i], visible;
- if (!actorData.trackFullscreen)
- continue;
-
- if (!windowsVisible)
- visible = true;
- else if (this.findMonitorForActor(actorData.actor).inFullscreen)
- visible = false;
- else
- visible = true;
- actorData.actor.visible = visible;
- }
+ this._trackedActors.forEach(Lang.bind(this, this._updateActorVisibility));
},
getWorkAreaForMonitor: function(monitorIndex) {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]