From 2f5a226bc240513eb2b802dbcf512b246cc875d8 Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Thu, 16 Oct 2014 16:45:02 -0400 Subject: [PATCH] Fix handling of SystemBackground Since the background rework, SystemBackground is no longer a transparent actor that you have to stack on top of a solid background, it is an opaque actor. Fix the color of the background actor, and remove places where we were setting the background color underneath the system background and expecting blending - in particular, we can always set no_clear_hint on the stage. https://bugzilla.gnome.org/show_bug.cgi?id=738652 --- js/ui/background.js | 3 +++ js/ui/layout.js | 17 ++++------------- js/ui/magnifier.js | 7 +------ js/ui/main.js | 2 -- 4 files changed, 8 insertions(+), 21 deletions(-) diff --git a/js/ui/background.js b/js/ui/background.js index 7de204b60..81d186eb1 100644 --- a/js/ui/background.js +++ b/js/ui/background.js @@ -106,6 +106,8 @@ const Main = imports.ui.main; const Params = imports.misc.params; const Tweener = imports.ui.tweener; +const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff); + const BACKGROUND_SCHEMA = 'org.gnome.desktop.background'; const PRIMARY_COLOR_KEY = 'primary-color'; const SECONDARY_COLOR_KEY = 'secondary-color'; @@ -463,6 +465,7 @@ const SystemBackground = new Lang.Class({ if (_systemBackground == null) { _systemBackground = new Meta.Background({ meta_screen: global.screen }); + _systemBackground.set_color(DEFAULT_BACKGROUND_COLOR); _systemBackground.set_file(file, GDesktopEnums.BackgroundStyle.WALLPAPER); } diff --git a/js/ui/layout.js b/js/ui/layout.js index dda9fc7d6..c20dc61ff 100644 --- a/js/ui/layout.js +++ b/js/ui/layout.js @@ -20,7 +20,6 @@ const Tweener = imports.ui.tweener; const STARTUP_ANIMATION_TIME = 0.5; const KEYBOARD_ANIMATION_TIME = 0.15; const BACKGROUND_FADE_ANIMATION_TIME = 1.0; -const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff); // The message tray takes this much pressure // in the pressure barrier at once to release it. @@ -160,10 +159,10 @@ const LayoutManager = new Lang.Class({ this._isPopupWindowVisible = false; this._startingUp = true; - // Normally, the stage is always covered so Clutter doesn't need to clear - // it; however it becomes visible during the startup animation - // See the comment below for a longer explanation - global.stage.background_color = DEFAULT_BACKGROUND_COLOR; + // We don't want to paint the stage background color because either + // the SystemBackground we create or the MetaBackgroundActor inside + // global.window_group covers the entirety of the screen. + global.stage.no_clear_hint = true; // Set up stage hierarchy to group all UI actors under one container. this.uiGroup = new Shell.GenericContainer({ name: 'uiGroup' }); @@ -588,10 +587,6 @@ const LayoutManager = new Lang.Class({ // // When starting a normal user session, we want to grow it out of the middle // of the screen. - // - // Usually, we don't want to paint the stage background color because the - // MetaBackgroundActor inside global.window_group covers the entirety of the - // screen. So, we set no_clear_hint at the end of the animation. _prepareStartupAnimation: function() { // During the initial transition, add a simple actor to block all events, @@ -672,10 +667,6 @@ const LayoutManager = new Lang.Class({ }, _startupAnimationComplete: function() { - // At this point, the UI group is covering everything, so - // we no longer need to clear the stage - global.stage.no_clear_hint = true; - this._coverPane.destroy(); this._coverPane = null; diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js index ccbf8cda4..101c14c77 100644 --- a/js/ui/magnifier.js +++ b/js/ui/magnifier.js @@ -1198,12 +1198,7 @@ const ZoomRegion = new Lang.Class({ // Add a background for when the magnified uiGroup is scrolled // out of view (don't want to see desktop showing through). - this._background = new Clutter.Actor({ background_color: Main.DEFAULT_BACKGROUND_COLOR, - layout_manager: new Clutter.BinLayout(), - width: global.screen_width, - height: global.screen_height }); - let noiseTexture = (new Background.SystemBackground()).actor; - this._background.add_actor(noiseTexture); + this._background = (new Background.SystemBackground()).actor; mainGroup.add_actor(this._background); // Clone the group that contains all of UI on the screen. This is the diff --git a/js/ui/main.js b/js/ui/main.js index 2fff9e654..4735cbe59 100644 --- a/js/ui/main.js +++ b/js/ui/main.js @@ -40,8 +40,6 @@ const Magnifier = imports.ui.magnifier; const XdndHandler = imports.ui.xdndHandler; const Util = imports.misc.util; -const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff); - const A11Y_SCHEMA = 'org.gnome.desktop.a11y.keyboard'; const STICKY_KEYS_ENABLE = 'stickykeys-enable'; const GNOMESHELL_STARTED_MESSAGE_ID = 'f3ea493c22934e26811cd62abe8e203a';