[gnome-shell] overview: move controls visibility handling to a separate object
- From: Cosimo Cecchi <cosimoc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] overview: move controls visibility handling to a separate object
- Date: Sat, 16 Feb 2013 04:47:43 +0000 (UTC)
commit 579e53f02c994101a50e34a53493d4c127fe2cc5
Author: Cosimo Cecchi <cosimoc gnome org>
Date: Fri Feb 15 18:25:36 2013 -0500
overview: move controls visibility handling to a separate object
This keeps the core code of the overview clean and will help
coordinate animations.
https://bugzilla.gnome.org/show_bug.cgi?id=693924
js/ui/overview.js | 57 ++++++++++++---------------------------------
js/ui/overviewControls.js | 40 +++++++++++++++++++++++++++++++
2 files changed, 55 insertions(+), 42 deletions(-)
---
diff --git a/js/ui/overview.js b/js/ui/overview.js
index c57ab95..f5706f0 100644
--- a/js/ui/overview.js
+++ b/js/ui/overview.js
@@ -223,25 +223,20 @@ const Overview = new Lang.Class({
x_align: St.Align.MIDDLE });
this._overview.add_actor(this._searchEntryBin);
- // TODO - recalculate everything when desktop size changes
+ // Create controls
this._dash = new Dash.Dash();
- this.dashIconSize = this._dash.iconSize;
- this._dash.connect('icon-size-changed',
- Lang.bind(this, function() {
- this.dashIconSize = this._dash.iconSize;
- }));
-
- this._dashSlider = new OverviewControls.DashSlider(this._dash);
- this._group.add_actor(this._dashSlider.actor);
-
this._viewSelector = new ViewSelector.ViewSelector(this._searchEntry,
this._dash.showAppsButton);
+ this._thumbnailsBox = new WorkspaceThumbnail.ThumbnailsBox();
+ this._controls = new OverviewControls.ControlsManager(this._dash,
+ this._thumbnailsBox,
+ this._viewSelector);
+
+ // Pack all the actors into the group
+ this._group.add_actor(this._controls.dashActor);
this._group.add(this._viewSelector.actor, { x_fill: true,
expand: true });
-
- this._thumbnailsBox = new WorkspaceThumbnail.ThumbnailsBox();
- this._thumbnailsSlider = new OverviewControls.ThumbnailsSlider(this._thumbnailsBox);
- this._group.add_actor(this._thumbnailsSlider.actor);
+ this._group.add_actor(this._controls.thumbnailsActor);
// Add our same-line elements after the search entry
this._overview.add(this._group, { y_fill: true,
@@ -255,39 +250,17 @@ const Overview = new Lang.Class({
y_fill: true });
this._overview.add_actor(this._messageTrayGhost);
- this._viewSelector.connect('page-changed', Lang.bind(this,
- function() {
- this._setSideControlsVisibility();
- }));
+ // TODO - recalculate everything when desktop size changes
+ this.dashIconSize = this._dash.iconSize;
+ this._dash.connect('icon-size-changed',
+ Lang.bind(this, function() {
+ this.dashIconSize = this._dash.iconSize;
+ }));
Main.layoutManager.connect('monitors-changed', Lang.bind(this, this._relayout));
this._relayout();
},
- _setSideControlsVisibility: function() {
- // Ignore the case when we're leaving the overview, since
- // actors will be made visible again when entering the overview
- // next time, and animating them while doing so is just
- // unnecesary noise
- if (!this.visible || this._hideInProgress)
- 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
- this._dashSlider.slideOut();
-
- if (thumbnailsVisible)
- this._thumbnailsSlider.slideIn();
- else
- this._thumbnailsSlider.slideOut();
- },
-
addSearchProvider: function(provider) {
this._viewSelector.addSearchProvider(provider);
},
diff --git a/js/ui/overviewControls.js b/js/ui/overviewControls.js
index 8413874..495731a 100644
--- a/js/ui/overviewControls.js
+++ b/js/ui/overviewControls.js
@@ -6,6 +6,7 @@ const St = imports.gi.St;
const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
+const ViewSelector = imports.ui.viewSelector;
const SIDE_CONTROLS_ANIMATION_TIME = 0.2;
@@ -232,3 +233,42 @@ const DashSlider = new Lang.Class({
return 0;
}
});
+
+const ControlsManager = new Lang.Class({
+ Name: 'ControlsManager',
+
+ _init: function(dash, thumbnails, viewSelector) {
+ this._dashSlider = new DashSlider(dash);
+ this.dashActor = this._dashSlider.actor;
+
+ this._thumbnailsSlider = new ThumbnailsSlider(thumbnails);
+ this.thumbnailsActor = this._thumbnailsSlider.actor;
+
+ this._viewSelector = viewSelector;
+ this._viewSelector.connect('page-changed', Lang.bind(this, this._setVisibility));
+ },
+
+ _setVisibility: function() {
+ // Ignore the case when we're leaving the overview, since
+ // actors will be made visible again when entering the overview
+ // next time, and animating them while doing so is just
+ // unnecessary noise
+ if (!Main.overview.visible)
+ 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
+ this._dashSlider.slideOut();
+
+ if (thumbnailsVisible)
+ this._thumbnailsSlider.slideIn();
+ else
+ this._thumbnailsSlider.slideOut();
+ }
+});
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]