[gnome-shell] overviewControls: Don't allow appearing controls to "pop in"
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] overviewControls: Don't allow appearing controls to "pop in"
- Date: Thu, 26 Sep 2013 18:06:37 +0000 (UTC)
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]