From 4bd071bf3c2b0273e557db7614ab061a4d1627c1 Mon Sep 17 00:00:00 2001 From: Cosimo Cecchi Date: Fri, 24 Aug 2012 11:24:49 -0500 Subject: [PATCH] viewSelector: clean up active search state code 'active' isn't terribly clear about just what is active; also, make it private, remove an useless extra object state we were saving, and refactor some messy code. Based on a patch by Tanner Doshier. https://bugzilla.gnome.org/show_bug.cgi?id=692454 --- js/ui/viewSelector.js | 57 ++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 30 deletions(-) diff --git a/js/ui/viewSelector.js b/js/ui/viewSelector.js index 1ece4a06c..c45057c9a 100644 --- a/js/ui/viewSelector.js +++ b/js/ui/viewSelector.js @@ -47,8 +47,7 @@ const ViewSelector = new Lang.Class({ this._activePage = null; - this.active = false; - this._searchPending = false; + this._searchActive = false; this._searchTimeoutId = 0; this._searchSystem = new Search.SearchSystem(); @@ -224,7 +223,7 @@ const ViewSelector = new Lang.Class({ }, _onShowAppsButtonToggled: function() { - if (this.active) + if (this._searchActive) this.reset(); else this._showPage(this._showAppsButton.checked ? this._appsPage @@ -245,7 +244,7 @@ const ViewSelector = new Lang.Class({ let symbol = event.get_key_symbol(); if (symbol == Clutter.Escape) { - if (this.active) + if (this._searchActive) this.reset(); else if (this._showAppsButton.checked) this._resetShowAppsButton(); @@ -253,9 +252,9 @@ const ViewSelector = new Lang.Class({ Main.overview.hide(); return true; } else if (Clutter.keysym_to_unicode(symbol) || - (symbol == Clutter.BackSpace && this.active)) { + (symbol == Clutter.BackSpace && this._searchActive)) { this.startSearch(event); - } else if (!this.active) { + } else if (!this._searchActive) { if (symbol == Clutter.Tab || symbol == Clutter.Down) { this._activePage.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false); return true; @@ -329,39 +328,37 @@ const ViewSelector = new Lang.Class({ }, _onTextChanged: function (se, prop) { - let searchPreviouslyActive = this.active; - this.active = this._entry.get_text() != ''; - this._searchPending = this.active && !searchPreviouslyActive; - if (this._searchPending) { + let searchPreviouslyActive = this._searchActive; + this._searchActive = this._entry.get_text() != ''; + + let startSearch = this._searchActive && !searchPreviouslyActive; + if (startSearch) this._searchResults.startingSearch(); - } - if (this.active) { + + if (this._searchActive) { this._entry.set_secondary_icon(this._activeIcon); - if (this._iconClickedId == 0) { + if (this._iconClickedId == 0) this._iconClickedId = this._entry.connect('secondary-icon-clicked', - Lang.bind(this, function() { - this.reset(); - })); - } - } else { - if (this._iconClickedId > 0) - this._entry.disconnect(this._iconClickedId); - this._iconClickedId = 0; + Lang.bind(this, this.reset)); + + if (this._searchTimeoutId == 0) + this._searchTimeoutId = Mainloop.timeout_add(150, + Lang.bind(this, this._doSearch)); + } else { + if (this._iconClickedId > 0) { + this._entry.disconnect(this._iconClickedId); + this._iconClickedId = 0; + } - this._entry.set_secondary_icon(this._inactiveIcon); - this._searchCancelled(); - } - if (!this.active) { if (this._searchTimeoutId > 0) { Mainloop.source_remove(this._searchTimeoutId); this._searchTimeoutId = 0; } - return; + + this._entry.set_secondary_icon(this._inactiveIcon); + this._searchCancelled(); } - if (this._searchTimeoutId > 0) - return; - this._searchTimeoutId = Mainloop.timeout_add(150, Lang.bind(this, this._doSearch)); }, _onKeyPress: function(entry, event) { @@ -380,7 +377,7 @@ const ViewSelector = new Lang.Class({ } this._searchResults.activateDefault(); return true; - } else if (this.active) { + } else if (this._searchActive) { let arrowNext, nextDirection; if (entry.get_text_direction() == Clutter.TextDirection.RTL) { arrowNext = Clutter.Left;