diff --git a/js/ui/viewSelector.js b/js/ui/viewSelector.js index be046b1f0..ab16fdde8 100644 --- a/js/ui/viewSelector.js +++ b/js/ui/viewSelector.js @@ -118,13 +118,13 @@ const ViewSelector = new Lang.Class({ this._stageKeyPressId = 0; Main.overview.connect('showing', Lang.bind(this, function () { - this._resetShowAppsButton(); + this._showAppsButton.checked = false; this._stageKeyPressId = global.stage.connect('key-press-event', Lang.bind(this, this._onStageKeyPress)); })); Main.overview.connect('hiding', Lang.bind(this, function () { - this._resetShowAppsButton(); + this._showAppsButton.checked = false; if (this._stageKeyPressId != 0) { global.stage.disconnect(this._stageKeyPressId); this._stageKeyPressId = 0; @@ -162,7 +162,7 @@ const ViewSelector = new Lang.Class({ this._workspacesDisplay.show(); this._activePage = null; - this._showPage(this._workspacesPage); + this._syncActivePage(); if (!this._workspacesDisplay.activeWorkspaceHasMaximizedWindows()) Main.overview.fadeOutDesktop(); @@ -221,7 +221,7 @@ const ViewSelector = new Lang.Class({ }); }, - _showPage: function(page, noFade) { + _showPage: function(page) { if (page == this._activePage) return; @@ -229,7 +229,7 @@ const ViewSelector = new Lang.Class({ this._activePage = page; this.emit('page-changed'); - if (oldPage && !noFade) + if (oldPage) Tweener.addTween(oldPage, { opacity: 0, time: OverviewControls.SIDE_CONTROLS_ANIMATION_TIME, @@ -248,20 +248,24 @@ const ViewSelector = new Lang.Class({ page.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false); }, - _onShowAppsButtonToggled: function() { - if (this._showAppsBlocked) - return; - - this._showPage(this._showAppsButton.checked ? - this._appsPage : this._workspacesPage); + _getActivePage: function() { + if (this._searchActive) + return this._searchPage; + else if (this._showAppsButton.checked) + return this._appsPage; + else + return this._workspacesPage; }, - _resetShowAppsButton: function() { - this._showAppsBlocked = true; - this._showAppsButton.checked = false; - this._showAppsBlocked = false; + _syncActivePage: function() { + let activePage = this._getActivePage(); + if (activePage == this._activePage) + return; + this._showPage(activePage); + }, - this._showPage(this._workspacesPage, true); + _onShowAppsButtonToggled: function() { + this._syncActivePage(); }, _onStageKeyPress: function(actor, event) { @@ -287,20 +291,6 @@ const ViewSelector = new Lang.Class({ return Clutter.EVENT_PROPAGATE; }, - _searchCancelled: function() { - this._showPage(this._showAppsButton.checked ? this._appsPage - : this._workspacesPage); - - // Leave the entry focused when it doesn't have any text; - // when replacing a selected search term, Clutter emits - // two 'text-changed' signals, one for deleting the previous - // text and one for the new one - the second one is handled - // incorrectly when we remove focus - // (https://bugzilla.gnome.org/show_bug.cgi?id=636341) */ - if (this._text.text != '') - this.reset(); - }, - reset: function () { global.stage.set_key_focus(null); @@ -391,8 +381,18 @@ const ViewSelector = new Lang.Class({ } this._entry.set_secondary_icon(null); - this._searchCancelled(); + + // Leave the entry focused when it doesn't have any text; + // when replacing a selected search term, Clutter emits + // two 'text-changed' signals, one for deleting the previous + // text and one for the new one - the second one is handled + // incorrectly when we remove focus + // (https://bugzilla.gnome.org/show_bug.cgi?id=636341) */ + if (this._text.text != '') + this.reset(); } + + this._syncActivePage(); }, _onKeyPress: function(entry, event) { @@ -459,9 +459,7 @@ const ViewSelector = new Lang.Class({ this._searchTimeoutId = 0; let terms = getTermsForSearchString(this._entry.get_text()); - this._searchResults.setTerms(terms); - this._showPage(this._searchPage); return GLib.SOURCE_REMOVE; },