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
This commit is contained in:
parent
3dfced7976
commit
4db34fca36
@ -837,6 +837,7 @@ const LayoutManager = new Lang.Class({
|
|||||||
// need to connect to 'destroy' too.
|
// need to connect to 'destroy' too.
|
||||||
|
|
||||||
this._trackedActors.push(actorData);
|
this._trackedActors.push(actorData);
|
||||||
|
this._updateActorVisibility(actorData);
|
||||||
this._queueUpdateRegions();
|
this._queueUpdateRegions();
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -855,25 +856,23 @@ const LayoutManager = new Lang.Class({
|
|||||||
this._queueUpdateRegions();
|
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() {
|
_updateVisibility: function() {
|
||||||
let windowsVisible = Main.sessionMode.hasWindows && !this._inOverview;
|
let windowsVisible = Main.sessionMode.hasWindows && !this._inOverview;
|
||||||
|
|
||||||
global.window_group.visible = windowsVisible;
|
global.window_group.visible = windowsVisible;
|
||||||
global.top_window_group.visible = windowsVisible;
|
global.top_window_group.visible = windowsVisible;
|
||||||
|
|
||||||
for (let i = 0; i < this._trackedActors.length; i++) {
|
this._trackedActors.forEach(Lang.bind(this, this._updateActorVisibility));
|
||||||
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;
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
getWorkAreaForMonitor: function(monitorIndex) {
|
getWorkAreaForMonitor: function(monitorIndex) {
|
||||||
|
Loading…
Reference in New Issue
Block a user