chrome: don't show visibleInOverview chrome when the screensaver is active

visibleInOverview chrome was visible even when the screensaver was
active. Although we may eventually need visibleInScreenSaver, that
should be a separate flag.

Fix this by tracking the screensaver active state, and hiding the chrome
when the screensaver is active.

https://bugzilla.gnome.org/show_bug.cgi?id=654550
This commit is contained in:
Dan Winship 2011-06-06 11:05:34 -04:00
parent 5f86e29830
commit 896d8e830c

View File

@ -8,6 +8,7 @@ const Signals = imports.signals;
const Main = imports.ui.main; const Main = imports.ui.main;
const Params = imports.misc.params; const Params = imports.misc.params;
const ScreenSaver = imports.misc.screenSaver;
// This manages the shell "chrome"; the UI that's visible in the // This manages the shell "chrome"; the UI that's visible in the
// normal mode (ie, outside the Overview), that surrounds the main // normal mode (ie, outside the Overview), that surrounds the main
@ -49,6 +50,14 @@ Chrome.prototype = {
Main.overview.connect('hidden', Main.overview.connect('hidden',
Lang.bind(this, this._overviewHidden)); Lang.bind(this, this._overviewHidden));
this._screenSaverProxy = new ScreenSaver.ScreenSaverProxy();
this._screenSaverProxy.connect('ActiveChanged', Lang.bind(this, this._onScreenSaverActiveChanged));
this._screenSaverProxy.GetActiveRemote(Lang.bind(this,
function(result, err) {
if (!err)
this._onScreenSaverActiveChanged(this._screenSaverProxy, result);
}));
this._relayout(); this._relayout();
}, },
@ -212,6 +221,11 @@ Chrome.prototype = {
this._queueUpdateRegions(); this._queueUpdateRegions();
}, },
_onScreenSaverActiveChanged: function(proxy, screenSaverActive) {
this.actor.visible = !screenSaverActive;
this._queueUpdateRegions();
},
_findMonitorForRect: function(x, y, w, h) { _findMonitorForRect: function(x, y, w, h) {
// First look at what monitor the center of the rectangle is at // First look at what monitor the center of the rectangle is at
let cx = x + w/2; let cx = x + w/2;