diff --git a/js/ui/chrome.js b/js/ui/chrome.js index f2a7d149c..5dd21e5e8 100644 --- a/js/ui/chrome.js +++ b/js/ui/chrome.js @@ -8,6 +8,7 @@ const Signals = imports.signals; const Main = imports.ui.main; const Params = imports.misc.params; +const ScreenSaver = imports.misc.screenSaver; // This manages the shell "chrome"; the UI that's visible in the // normal mode (ie, outside the Overview), that surrounds the main @@ -49,6 +50,14 @@ Chrome.prototype = { Main.overview.connect('hidden', 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(); }, @@ -212,6 +221,11 @@ Chrome.prototype = { this._queueUpdateRegions(); }, + _onScreenSaverActiveChanged: function(proxy, screenSaverActive) { + this.actor.visible = !screenSaverActive; + this._queueUpdateRegions(); + }, + _findMonitorForRect: function(x, y, w, h) { // First look at what monitor the center of the rectangle is at let cx = x + w/2;