[gnome-shell] viewSelector: Use a fixed set of view tabs
- From: Florian MÃllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] viewSelector: Use a fixed set of view tabs
- Date: Mon, 20 Aug 2012 12:23:47 +0000 (UTC)
commit b5dc78a968d625c5ea146498e6c8d451600cc664
Author: Joost Verdoorn <jpverdoorn gmail com>
Date: Sat Jul 28 23:06:46 2012 +0300
viewSelector: Use a fixed set of view tabs
Design calls for views being accessible by other means than the current tab
system, so we have no longer a need for the public viewTab API. Move the
initialization of tabs to the viewSelector and make
viewSelector.addViewTab() private.
https://bugzilla.gnome.org/show_bug.cgi?id=682109
js/ui/overview.js | 75 ++++++++++++++++--------------------------------
js/ui/viewSelector.js | 44 +++++++++++++++++++++++++++-
2 files changed, 67 insertions(+), 52 deletions(-)
---
diff --git a/js/ui/overview.js b/js/ui/overview.js
index 925b2e6..1cd10cb 100644
--- a/js/ui/overview.js
+++ b/js/ui/overview.js
@@ -10,19 +10,14 @@ const St = imports.gi.St;
const Shell = imports.gi.Shell;
const Gdk = imports.gi.Gdk;
-const AppDisplay = imports.ui.appDisplay;
const Dash = imports.ui.dash;
const DND = imports.ui.dnd;
const Main = imports.ui.main;
const MessageTray = imports.ui.messageTray;
const Panel = imports.ui.panel;
const Params = imports.misc.params;
-const PlaceDisplay = imports.ui.placeDisplay;
-const RemoteSearch = imports.ui.remoteSearch;
const Tweener = imports.ui.tweener;
const ViewSelector = imports.ui.viewSelector;
-const Wanda = imports.ui.wanda;
-const WorkspacesView = imports.ui.workspacesView;
const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
// Time for initial animation going into Overview mode
@@ -144,8 +139,6 @@ const Overview = new Lang.Class({
this._capturedEventId = 0;
this._buttonPressId = 0;
- this._workspacesDisplay = null;
-
this.visible = false; // animating to overview, in overview, animating out
this._shown = false; // show() and not hide()
this._shownTemporarily = false; // showTemporarily() and not hideTemporarily()
@@ -195,22 +188,6 @@ const Overview = new Lang.Class({
this._viewSelector = new ViewSelector.ViewSelector();
this._group.add_actor(this._viewSelector.actor);
- this._workspacesDisplay = new WorkspacesView.WorkspacesDisplay();
- this._viewSelector.addViewTab('windows', _("Windows"), this._workspacesDisplay.actor, 'text-x-generic');
-
- let appView = new AppDisplay.AllAppDisplay();
- this._viewSelector.addViewTab('applications', _("Applications"), appView.actor, 'system-run');
-
- // Default search providers
- // Wanda comes obviously first
- this.addSearchProvider(new Wanda.WandaSearchProvider());
- this.addSearchProvider(new AppDisplay.AppSearchProvider());
- this.addSearchProvider(new AppDisplay.SettingsSearchProvider());
- this.addSearchProvider(new PlaceDisplay.PlaceSearchProvider());
-
- // Load remote search providers provided by applications
- RemoteSearch.loadRemoteSearchProviders(Lang.bind(this, this.addSearchProvider));
-
// TODO - recalculate everything when desktop size changes
this._dash = new Dash.Dash();
this._group.add_actor(this._dash.actor);
@@ -565,6 +542,28 @@ const Overview = new Lang.Class({
Lang.bind(this, this._onButtonPress));
},
+ fadeInDesktop: function() {
+ this._desktopFade.opacity = 0;
+ this._desktopFade.show();
+ Tweener.addTween(this._desktopFade,
+ { opacity: 255,
+ time: ANIMATION_TIME,
+ transition: 'easeOutQuad' });
+ },
+
+ fadeOutDesktop: function() {
+ if (!this._desktopFade.child)
+ this._desktopFade.child = this._getDesktopClone();
+
+ this._desktopFade.opacity = 255;
+ this._desktopFade.show();
+ Tweener.addTween(this._desktopFade,
+ { opacity: 0,
+ time: ANIMATION_TIME,
+ transition: 'easeOutQuad'
+ });
+ },
+
_animateVisible: function() {
if (this.visible || this.animationInProgress)
return;
@@ -585,21 +584,7 @@ const Overview = new Lang.Class({
global.window_group.hide();
this._group.show();
this._background.show();
-
- this._workspacesDisplay.show();
-
- if (!this._desktopFade.child)
- this._desktopFade.child = this._getDesktopClone();
-
- if (!this._workspacesDisplay.activeWorkspaceHasMaximizedWindows()) {
- this._desktopFade.opacity = 255;
- this._desktopFade.show();
- Tweener.addTween(this._desktopFade,
- { opacity: 0,
- time: ANIMATION_TIME,
- transition: 'easeOutQuad'
- });
- }
+ this._viewSelector.show();
this._group.opacity = 0;
Tweener.addTween(this._group,
@@ -726,16 +711,7 @@ const Overview = new Lang.Class({
this.animationInProgress = true;
this._hideInProgress = true;
- if (!this._workspacesDisplay.activeWorkspaceHasMaximizedWindows()) {
- this._desktopFade.opacity = 0;
- this._desktopFade.show();
- Tweener.addTween(this._desktopFade,
- { opacity: 255,
- time: ANIMATION_TIME,
- transition: 'easeOutQuad' });
- }
-
- this._workspacesDisplay.zoomFromOverview();
+ this._viewSelector.zoomFromOverview();
// Make other elements fade out.
Tweener.addTween(this._group,
@@ -777,8 +753,7 @@ const Overview = new Lang.Class({
global.window_group.show();
- this._workspacesDisplay.hide();
-
+ this._viewSelector.hide();
this._desktopFade.hide();
this._background.hide();
this._group.hide();
diff --git a/js/ui/viewSelector.js b/js/ui/viewSelector.js
index 2d11272..463b1d5 100644
--- a/js/ui/viewSelector.js
+++ b/js/ui/viewSelector.js
@@ -9,11 +9,16 @@ const Lang = imports.lang;
const Shell = imports.gi.Shell;
const St = imports.gi.St;
+const AppDisplay = imports.ui.appDisplay;
const Main = imports.ui.main;
+const PlaceDisplay = imports.ui.placeDisplay;
+const RemoteSearch = imports.ui.remoteSearch;
const Search = imports.ui.search;
const SearchDisplay = imports.ui.searchDisplay;
const ShellEntry = imports.ui.shellEntry;
const Tweener = imports.ui.tweener;
+const Wanda = imports.ui.wanda;
+const WorkspacesView = imports.ui.workspacesView;
const BaseTab = new Lang.Class({
Name: 'BaseTab',
@@ -392,6 +397,24 @@ const ViewSelector = new Lang.Class({
this._switchTab(this._activeTab);
}));
+ this._workspacesDisplay = new WorkspacesView.WorkspacesDisplay();
+ this._windowsTab = new ViewTab('windows', _("Windows"), this._workspacesDisplay.actor, 'text-x-generic');
+ this._addViewTab(this._windowsTab);
+
+ let appView = new AppDisplay.AllAppDisplay();
+ this._appsTab = new ViewTab('applications', _("Applications"), appView.actor, 'system-run');
+ this._addViewTab(this._appsTab);
+
+ // Default search providers
+ // Wanda comes obviously first
+ this.addSearchProvider(new Wanda.WandaSearchProvider());
+ this.addSearchProvider(new AppDisplay.AppSearchProvider());
+ this.addSearchProvider(new AppDisplay.SettingsSearchProvider());
+ this.addSearchProvider(new PlaceDisplay.PlaceSearchProvider());
+
+ // Load remote search providers provided by applications
+ RemoteSearch.loadRemoteSearchProviders(Lang.bind(this, this.addSearchProvider));
+
Main.overview.connect('item-drag-begin',
Lang.bind(this, this._switchDefaultTab));
@@ -425,6 +448,24 @@ const ViewSelector = new Lang.Class({
coordinate: Clutter.BindCoordinate.HEIGHT });
},
+ show: function() {
+ this._workspacesDisplay.show();
+
+ if (!this._workspacesDisplay.activeWorkspaceHasMaximizedWindows())
+ Main.overview.fadeOutDesktop();
+ },
+
+ zoomFromOverview: function() {
+ this._workspacesDisplay.zoomFromOverview();
+
+ if (!this._workspacesDisplay.activeWorkspaceHasMaximizedWindows())
+ Main.overview.fadeInDesktop();
+ },
+
+ hide: function() {
+ this._workspacesDisplay.hide();
+ },
+
_addTab: function(tab) {
tab.page.hide();
this._pageArea.add_actor(tab.page);
@@ -433,8 +474,7 @@ const ViewSelector = new Lang.Class({
}));
},
- addViewTab: function(id, title, pageActor, a11yIcon) {
- let viewTab = new ViewTab(id, title, pageActor, a11yIcon);
+ _addViewTab: function(viewTab) {
this._tabs.push(viewTab);
this._tabBox.add(viewTab.title);
this._addTab(viewTab);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]