From a7d7f948924a312638d4f503c00a362b6367b785 Mon Sep 17 00:00:00 2001 From: "Jasper St. Pierre" Date: Mon, 13 Jan 2014 13:38:45 -0500 Subject: [PATCH] screenShield: Don't hide windows until we've fully locked the shield Revert the commit that ties hasWindows to the session mode, as we need to do the "transition" manually. Instead, show/hide the sessionGroup ourselves. For optimization purposes, we also need to hide the window groups when in the overview. Ideally, these would be culled out by Clutter, but they are not from experimentation. --- js/ui/layout.js | 9 ++++++--- js/ui/screenShield.js | 6 +++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/js/ui/layout.js b/js/ui/layout.js index 3dc7466b5..20696ae90 100644 --- a/js/ui/layout.js +++ b/js/ui/layout.js @@ -280,6 +280,9 @@ const LayoutManager = new Lang.Class({ this._inOverview = true; this._updateVisibility(); this._updateRegions(); + + global.window_group.hide(); + global.top_window_group.hide(); }, hideOverview: function() { @@ -288,6 +291,9 @@ const LayoutManager = new Lang.Class({ this._inOverview = false; this._updateVisibility(); this._queueUpdateRegions(); + + global.window_group.show(); + global.top_window_group.show(); }, _sessionUpdated: function() { @@ -858,9 +864,6 @@ const LayoutManager = new Lang.Class({ _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) diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js index 41e06cec1..f34b3f531 100644 --- a/js/ui/screenShield.js +++ b/js/ui/screenShield.js @@ -1008,6 +1008,7 @@ const ScreenShield = new Lang.Class({ return; this._ensureLockScreen(); + this._lockDialogGroup.hide(); this._lockDialogGroup.scale_x = 1; this._lockDialogGroup.scale_y = 1; @@ -1106,8 +1107,10 @@ const ScreenShield = new Lang.Class({ })); this._cursorTracker.set_pointer_visible(false); - this._lockScreenState = MessageTray.State.SHOWN; + this._lockDialogGroup.show(); this._lockScreenGroup.fixed_position_set = false; + this._lockScreenState = MessageTray.State.SHOWN; + Main.layoutManager.sessionGroup.hide(); this._lockScreenScrollCounter = 0; if (params.fadeToBlack && params.animateFade) { @@ -1234,6 +1237,7 @@ const ScreenShield = new Lang.Class({ this._isModal = false; } + Main.layoutManager.sessionGroup.show(); Tweener.addTween(this._lockDialogGroup, { scale_x: 0, scale_y: 0,