[gnome-shell] overviewControls: Don't allow appearing controls to "pop in"



commit e31693bbeea706bc646298d935e5e55e9ef01565
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Wed Sep 18 20:17:32 2013 -0400

    overviewControls: Don't allow appearing controls to "pop in"
    
    When coming back from search or apps, the workspace thumbnails and dash
    don't slide in but "pop in". This is because of bad timing: when slideIn
    is called, we immediately start the translation animation, and it
    completes before by the time we fade the new page in.
    
    Fix this by calling slideIn and slideOut at two different times: we now
    slide out when the old page with our controls is fading out, and slide in
    when the new page with our controls is fading in.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=708340

 js/ui/overviewControls.js |   35 ++++++++++++++---------------------
 1 files changed, 14 insertions(+), 21 deletions(-)
---
diff --git a/js/ui/overviewControls.js b/js/ui/overviewControls.js
index c16c4ac..f531476 100644
--- a/js/ui/overviewControls.js
+++ b/js/ui/overviewControls.js
@@ -208,23 +208,12 @@ const SlidingControl = new Lang.Class({
     slideIn: function() {
         this.visible = true;
         this._updateTranslation();
-        // we will update slideX and the translation from pageEmpty
     },
 
     slideOut: function() {
         this.visible = false;
         this._updateTranslation();
-        // we will update slideX from pageEmpty
     },
-
-    pageEmpty: function() {
-        // When pageEmpty is received, there's no visible view in the
-        // selector; this means we can now safely set the full slide for
-        // the next page, since slideIn or slideOut might have been called,
-        // changing the visiblity
-        this.layout.slideX = this.getSlide();
-        this._updateTranslation();
-    }
 });
 
 const ThumbnailsSlider = new Lang.Class({
@@ -600,18 +589,14 @@ const ControlsManager = new Lang.Class({
             return;
 
         let activePage = this.viewSelector.getActivePage();
+
         let dashVisible = (activePage == ViewSelector.ViewPage.WINDOWS ||
                            activePage == ViewSelector.ViewPage.APPS);
-        let thumbnailsVisible = (activePage == ViewSelector.ViewPage.WINDOWS);
-
-        if (dashVisible)
-            this._dashSlider.slideIn();
-        else
+        if (!dashVisible)
             this._dashSlider.slideOut();
 
-        if (thumbnailsVisible)
-            this._thumbnailsSlider.slideIn();
-        else
+        let thumbnailsVisible = (activePage == ViewSelector.ViewPage.WINDOWS);
+        if (!thumbnailsVisible)
             this._thumbnailsSlider.slideOut();
     },
 
@@ -624,8 +609,16 @@ const ControlsManager = new Lang.Class({
     },
 
     _onPageEmpty: function() {
-        this._dashSlider.pageEmpty();
-        this._thumbnailsSlider.pageEmpty();
+        let activePage = this.viewSelector.getActivePage();
+
+        let dashVisible = (activePage == ViewSelector.ViewPage.WINDOWS ||
+                           activePage == ViewSelector.ViewPage.APPS);
+        if (dashVisible)
+            this._dashSlider.slideIn();
+
+        let thumbnailsVisible = (activePage == ViewSelector.ViewPage.WINDOWS);
+        if (thumbnailsVisible)
+            this._thumbnailsSlider.slideIn();
 
         this._updateSpacerVisibility();
     }


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