[gnome-shell] [search] Finish queued search on Return
- From: Colin Walters <walters src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gnome-shell] [search] Finish queued search on Return
- Date: Tue, 13 Oct 2009 20:57:52 +0000 (UTC)
commit d1bdd6f11dbb047f1e7c43434ccf229b07dadeab
Author: Colin Walters <walters verbum org>
Date: Tue Oct 13 14:18:47 2009 -0400
[search] Finish queued search on Return
If we had a pending search processing, finish it when the user
activates the entry.
This is a small conceptual change; the large diff is simply
moving the search implementation (unedited otherwise) from
an anonymous inline to a named function so it can be called
sanely in _activate.
https://bugzilla.gnome.org/show_bug.cgi?id=598111
js/ui/dash.js | 92 ++++++++++++++++++++++++++++++--------------------------
1 files changed, 49 insertions(+), 43 deletions(-)
---
diff --git a/js/ui/dash.js b/js/ui/dash.js
index 28cd700..2f36775 100644
--- a/js/ui/dash.js
+++ b/js/ui/dash.js
@@ -641,51 +641,13 @@ Dash.prototype = {
}
if (this._searchTimeoutId > 0)
return;
- this._searchTimeoutId = Mainloop.timeout_add(150, Lang.bind(this, function() {
- this._searchTimeoutId = 0;
- let text = this._searchEntry.getText();
- text = text.replace(/^\s+/g, "").replace(/\s+$/g, "");
-
- let selectionSet = false;
-
- for (var i = 0; i < this._searchSections.length; i++) {
- let section = this._searchSections[i];
- section.resultArea.display.setSearch(text);
- let itemCount = section.resultArea.display.getMatchedItemsCount();
- let itemCountText = itemCount + "";
- section.header.countText.text = itemCountText;
-
- if (this._searchResultsSingleShownSection == section.type) {
- this._searchResultsSection.header.setCountText(itemCountText);
- if (itemCount == 0) {
- section.resultArea.actor.hide();
- } else {
- section.resultArea.actor.show();
- }
- } else if (this._searchResultsSingleShownSection == null) {
- // Don't show the section if it has no results
- if (itemCount == 0) {
- section.header.actor.hide();
- section.resultArea.actor.hide();
- } else {
- section.header.actor.show();
- section.resultArea.actor.show();
- }
- }
-
- // Refresh the selection when a new search is applied.
- section.resultArea.display.unsetSelected();
- if (!selectionSet && section.resultArea.display.hasItems() &&
- (this._searchResultsSingleShownSection == null || this._searchResultsSingleShownSection == section.type)) {
- section.resultArea.display.selectFirstItem();
- selectionSet = true;
- }
- }
-
- return false;
- }));
+ this._searchTimeoutId = Mainloop.timeout_add(150, Lang.bind(this, this._doSearch));
}));
this._searchEntry.entry.connect('activate', Lang.bind(this, function (se) {
+ if (this._searchTimeoutId > 0) {
+ Mainloop.source_remove(this._searchTimeoutId);
+ this._doSearch();
+ }
// Only one of the displays will have an item selected, so it's ok to
// call activateSelected() on all of them.
for (var i = 0; i < this._searchSections.length; i++) {
@@ -856,6 +818,50 @@ Dash.prototype = {
this._searchResultsSection.actor.hide();
},
+ _doSearch: function () {
+ this._searchTimeoutId = 0;
+ let text = this._searchEntry.getText();
+ text = text.replace(/^\s+/g, "").replace(/\s+$/g, "");
+
+ let selectionSet = false;
+
+ for (var i = 0; i < this._searchSections.length; i++) {
+ let section = this._searchSections[i];
+ section.resultArea.display.setSearch(text);
+ let itemCount = section.resultArea.display.getMatchedItemsCount();
+ let itemCountText = itemCount + "";
+ section.header.countText.text = itemCountText;
+
+ if (this._searchResultsSingleShownSection == section.type) {
+ this._searchResultsSection.header.setCountText(itemCountText);
+ if (itemCount == 0) {
+ section.resultArea.actor.hide();
+ } else {
+ section.resultArea.actor.show();
+ }
+ } else if (this._searchResultsSingleShownSection == null) {
+ // Don't show the section if it has no results
+ if (itemCount == 0) {
+ section.header.actor.hide();
+ section.resultArea.actor.hide();
+ } else {
+ section.header.actor.show();
+ section.resultArea.actor.show();
+ }
+ }
+
+ // Refresh the selection when a new search is applied.
+ section.resultArea.display.unsetSelected();
+ if (!selectionSet && section.resultArea.display.hasItems() &&
+ (this._searchResultsSingleShownSection == null || this._searchResultsSingleShownSection == section.type)) {
+ section.resultArea.display.selectFirstItem();
+ selectionSet = true;
+ }
+ }
+
+ return false;
+ },
+
show: function() {
global.stage.set_key_focus(this._searchEntry.entry);
},
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]