[gnome-shell/gnome-3-14] Fix handling of SystemBackground



commit 416adec90414c0279108ca83963fe5b110b3e097
Author: Owen W. Taylor <otaylor fishsoup net>
Date:   Thu Oct 16 16:45:02 2014 -0400

    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 781f202..4987a4f 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';
@@ -452,6 +454,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_filename(filename, GDesktopEnums.BackgroundStyle.WALLPAPER);
         }
 
diff --git a/js/ui/layout.js b/js/ui/layout.js
index c61376d..9228bd1 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' });
@@ -591,10 +590,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,
@@ -675,10 +670,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 ccbf8cd..101c14c 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 f9bb59e..2459069 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';


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]