From 4db34fca36ae8de643edd3210adaacec22da1bb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 14 May 2015 17:33:24 +0200 Subject: [PATCH] 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 file changed, 12 insertions(+), 13 deletions(-) diff --git a/js/ui/layout.js b/js/ui/layout.js index 204665fa0..65302e7aa 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) {