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
This commit is contained in:
parent
ebe7890a49
commit
b5dc78a968
@ -10,19 +10,14 @@ const St = imports.gi.St;
|
|||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const Gdk = imports.gi.Gdk;
|
const Gdk = imports.gi.Gdk;
|
||||||
|
|
||||||
const AppDisplay = imports.ui.appDisplay;
|
|
||||||
const Dash = imports.ui.dash;
|
const Dash = imports.ui.dash;
|
||||||
const DND = imports.ui.dnd;
|
const DND = imports.ui.dnd;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
const MessageTray = imports.ui.messageTray;
|
const MessageTray = imports.ui.messageTray;
|
||||||
const Panel = imports.ui.panel;
|
const Panel = imports.ui.panel;
|
||||||
const Params = imports.misc.params;
|
const Params = imports.misc.params;
|
||||||
const PlaceDisplay = imports.ui.placeDisplay;
|
|
||||||
const RemoteSearch = imports.ui.remoteSearch;
|
|
||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
const ViewSelector = imports.ui.viewSelector;
|
const ViewSelector = imports.ui.viewSelector;
|
||||||
const Wanda = imports.ui.wanda;
|
|
||||||
const WorkspacesView = imports.ui.workspacesView;
|
|
||||||
const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
|
const WorkspaceThumbnail = imports.ui.workspaceThumbnail;
|
||||||
|
|
||||||
// Time for initial animation going into Overview mode
|
// Time for initial animation going into Overview mode
|
||||||
@ -144,8 +139,6 @@ const Overview = new Lang.Class({
|
|||||||
this._capturedEventId = 0;
|
this._capturedEventId = 0;
|
||||||
this._buttonPressId = 0;
|
this._buttonPressId = 0;
|
||||||
|
|
||||||
this._workspacesDisplay = null;
|
|
||||||
|
|
||||||
this.visible = false; // animating to overview, in overview, animating out
|
this.visible = false; // animating to overview, in overview, animating out
|
||||||
this._shown = false; // show() and not hide()
|
this._shown = false; // show() and not hide()
|
||||||
this._shownTemporarily = false; // showTemporarily() and not hideTemporarily()
|
this._shownTemporarily = false; // showTemporarily() and not hideTemporarily()
|
||||||
@ -195,22 +188,6 @@ const Overview = new Lang.Class({
|
|||||||
this._viewSelector = new ViewSelector.ViewSelector();
|
this._viewSelector = new ViewSelector.ViewSelector();
|
||||||
this._group.add_actor(this._viewSelector.actor);
|
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
|
// TODO - recalculate everything when desktop size changes
|
||||||
this._dash = new Dash.Dash();
|
this._dash = new Dash.Dash();
|
||||||
this._group.add_actor(this._dash.actor);
|
this._group.add_actor(this._dash.actor);
|
||||||
@ -565,6 +542,28 @@ const Overview = new Lang.Class({
|
|||||||
Lang.bind(this, this._onButtonPress));
|
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() {
|
_animateVisible: function() {
|
||||||
if (this.visible || this.animationInProgress)
|
if (this.visible || this.animationInProgress)
|
||||||
return;
|
return;
|
||||||
@ -585,21 +584,7 @@ const Overview = new Lang.Class({
|
|||||||
global.window_group.hide();
|
global.window_group.hide();
|
||||||
this._group.show();
|
this._group.show();
|
||||||
this._background.show();
|
this._background.show();
|
||||||
|
this._viewSelector.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._group.opacity = 0;
|
this._group.opacity = 0;
|
||||||
Tweener.addTween(this._group,
|
Tweener.addTween(this._group,
|
||||||
@ -726,16 +711,7 @@ const Overview = new Lang.Class({
|
|||||||
this.animationInProgress = true;
|
this.animationInProgress = true;
|
||||||
this._hideInProgress = true;
|
this._hideInProgress = true;
|
||||||
|
|
||||||
if (!this._workspacesDisplay.activeWorkspaceHasMaximizedWindows()) {
|
this._viewSelector.zoomFromOverview();
|
||||||
this._desktopFade.opacity = 0;
|
|
||||||
this._desktopFade.show();
|
|
||||||
Tweener.addTween(this._desktopFade,
|
|
||||||
{ opacity: 255,
|
|
||||||
time: ANIMATION_TIME,
|
|
||||||
transition: 'easeOutQuad' });
|
|
||||||
}
|
|
||||||
|
|
||||||
this._workspacesDisplay.zoomFromOverview();
|
|
||||||
|
|
||||||
// Make other elements fade out.
|
// Make other elements fade out.
|
||||||
Tweener.addTween(this._group,
|
Tweener.addTween(this._group,
|
||||||
@ -777,8 +753,7 @@ const Overview = new Lang.Class({
|
|||||||
|
|
||||||
global.window_group.show();
|
global.window_group.show();
|
||||||
|
|
||||||
this._workspacesDisplay.hide();
|
this._viewSelector.hide();
|
||||||
|
|
||||||
this._desktopFade.hide();
|
this._desktopFade.hide();
|
||||||
this._background.hide();
|
this._background.hide();
|
||||||
this._group.hide();
|
this._group.hide();
|
||||||
|
@ -9,11 +9,16 @@ const Lang = imports.lang;
|
|||||||
const Shell = imports.gi.Shell;
|
const Shell = imports.gi.Shell;
|
||||||
const St = imports.gi.St;
|
const St = imports.gi.St;
|
||||||
|
|
||||||
|
const AppDisplay = imports.ui.appDisplay;
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
|
const PlaceDisplay = imports.ui.placeDisplay;
|
||||||
|
const RemoteSearch = imports.ui.remoteSearch;
|
||||||
const Search = imports.ui.search;
|
const Search = imports.ui.search;
|
||||||
const SearchDisplay = imports.ui.searchDisplay;
|
const SearchDisplay = imports.ui.searchDisplay;
|
||||||
const ShellEntry = imports.ui.shellEntry;
|
const ShellEntry = imports.ui.shellEntry;
|
||||||
const Tweener = imports.ui.tweener;
|
const Tweener = imports.ui.tweener;
|
||||||
|
const Wanda = imports.ui.wanda;
|
||||||
|
const WorkspacesView = imports.ui.workspacesView;
|
||||||
|
|
||||||
const BaseTab = new Lang.Class({
|
const BaseTab = new Lang.Class({
|
||||||
Name: 'BaseTab',
|
Name: 'BaseTab',
|
||||||
@ -392,6 +397,24 @@ const ViewSelector = new Lang.Class({
|
|||||||
this._switchTab(this._activeTab);
|
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',
|
Main.overview.connect('item-drag-begin',
|
||||||
Lang.bind(this, this._switchDefaultTab));
|
Lang.bind(this, this._switchDefaultTab));
|
||||||
|
|
||||||
@ -425,6 +448,24 @@ const ViewSelector = new Lang.Class({
|
|||||||
coordinate: Clutter.BindCoordinate.HEIGHT });
|
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) {
|
_addTab: function(tab) {
|
||||||
tab.page.hide();
|
tab.page.hide();
|
||||||
this._pageArea.add_actor(tab.page);
|
this._pageArea.add_actor(tab.page);
|
||||||
@ -433,8 +474,7 @@ const ViewSelector = new Lang.Class({
|
|||||||
}));
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
addViewTab: function(id, title, pageActor, a11yIcon) {
|
_addViewTab: function(viewTab) {
|
||||||
let viewTab = new ViewTab(id, title, pageActor, a11yIcon);
|
|
||||||
this._tabs.push(viewTab);
|
this._tabs.push(viewTab);
|
||||||
this._tabBox.add(viewTab.title);
|
this._tabBox.add(viewTab.title);
|
||||||
this._addTab(viewTab);
|
this._addTab(viewTab);
|
||||||
|
Loading…
Reference in New Issue
Block a user