[polari/wip/fmuellner/connect-button: 2/2] connections: Auto-select first match while filtering
- From: Florian Müllner <fmuellner src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [polari/wip/fmuellner/connect-button: 2/2] connections: Auto-select first match while filtering
- Date: Wed, 16 Mar 2016 18:47:31 +0000 (UTC)
commit eb50ea694436936ba09c1bf8bf2b1e40ef7befb3
Author: Florian Müllner <fmuellner gnome org>
Date: Tue Mar 15 20:29:29 2016 +0100
connections: Auto-select first match while filtering
src/connections.js | 34 +++++++++++++++++-----------------
src/joinDialog.js | 5 -----
2 files changed, 17 insertions(+), 22 deletions(-)
---
diff --git a/src/connections.js b/src/connections.js
index ba528ed..fae84b4 100644
--- a/src/connections.js
+++ b/src/connections.js
@@ -78,8 +78,6 @@ const ConnectionsList = new Lang.Class({
this._rows = new Map();
- this._filterTerms = [];
- this._list.set_filter_func(Lang.bind(this, this._filterRows));
this._list.set_header_func(Lang.bind(this, this._updateHeader));
this._accountsMonitor = AccountsMonitor.getDefault();
@@ -107,21 +105,23 @@ const ConnectionsList = new Lang.Class({
},
setFilter: function(filter) {
- this._list.select_row(null);
- this._filterTerms = filter.trim().toLowerCase().replace(/\s+/g, ' ').split(' ');
- this._list.invalidate_filter();
- },
-
- activateFirst: function() {
- let row = this._list.get_row_at_y(0);
- this._list.select_row(row);
- },
-
- _filterRows: function(row) {
- let matchTerms = this._networksManager.getNetworkMatchTerms(row.id);
- return this._filterTerms.every(function(term) {
- return matchTerms.some(function(s) { return s.indexOf(term) != -1; });
- });
+ let trimmedFilter = filter.trim().toLowerCase().replace(/\s+/g, ' ');
+ let filterTerms = trimmedFilter.split(' ');
+ this._list.foreach(Lang.bind(this, function(r) {
+ let matchTerms = this._networksManager.getNetworkMatchTerms(r.id);
+ r.visible = filterTerms.every(t => {
+ return matchTerms.some(s => s.indexOf(t) != -1);
+ });
+ }));
+
+ let id = this._list.connect('draw', Lang.bind(this, function() {
+ let row = trimmedFilter ? this._list.get_row_at_y(0) : null;
+ if (row && row.selectable)
+ this._list.select_row(row);
+ else
+ this._list.unselect_all();
+ this._list.disconnect(id);
+ }));
},
_updateHeader: function(row, before) {
diff --git a/src/joinDialog.js b/src/joinDialog.js
index 31f7af6..1149b61 100644
--- a/src/joinDialog.js
+++ b/src/joinDialog.js
@@ -155,11 +155,6 @@ const JoinDialog = new Lang.Class({
else
this.response(Gtk.ResponseType.CANCEL);
}));
- this._filterEntry.connect_after('activate', Lang.bind(this,
- function() {
- if (this._filterEntry.text.length > 0)
- this._connectionsList.activateFirst();
- }));
},
_onAccountChanged: function() {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]