summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLubomir Rintel <lkundrak@v3.sk>2017-07-03 12:36:36 +0200
committerLubomir Rintel <lkundrak@v3.sk>2017-07-11 17:51:04 +0200
commit4645c9ae9dd6edd41f9cae48f2de26b39f884795 (patch)
treef5c76e1cfd7a34e34493c05fb8c0d38e6df82570
parentb0036e5c20cf1367fa528a0f6451a10a47e08f07 (diff)
downloadnetwork-manager-applet-4645c9ae9dd6edd41f9cae48f2de26b39f884795.tar.gz
editor: filter the connection type headers toolr/ui-improvements
-rw-r--r--src/connection-editor/nm-connection-list.c31
1 files changed, 29 insertions, 2 deletions
diff --git a/src/connection-editor/nm-connection-list.c b/src/connection-editor/nm-connection-list.c
index ce4d0f27..79fadd2f 100644
--- a/src/connection-editor/nm-connection-list.c
+++ b/src/connection-editor/nm-connection-list.c
@@ -642,6 +642,33 @@ timestamp_sort_func (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpoint
}
static gboolean
+has_visible_children (NMConnectionList *self, GtkTreeModel *model, GtkTreeIter *parent)
+{
+ NMConnectionListPrivate *priv = NM_CONNECTION_LIST_GET_PRIVATE (self);
+ GtkTreeIter iter;
+ const char *search;
+ char *id = NULL;
+
+ if (!gtk_search_bar_get_search_mode (priv->search_bar))
+ return gtk_tree_model_iter_has_child (model, parent);
+
+ if (!gtk_tree_model_iter_children (model, &iter, parent))
+ return FALSE;
+
+ search = gtk_entry_get_text (GTK_ENTRY (priv->search_entry));
+ do {
+ gtk_tree_model_get (model, &iter, COL_ID, &id, -1);
+ if (strcasestr (id, search) != NULL) {
+ g_free (id);
+ return TRUE;
+ }
+ g_free (id);
+ } while (gtk_tree_model_iter_next (model, &iter));
+
+ return FALSE;
+}
+
+static gboolean
tree_model_visible_func (GtkTreeModel *model,
GtkTreeIter *iter,
gpointer user_data)
@@ -659,8 +686,8 @@ tree_model_visible_func (GtkTreeModel *model,
COL_CONNECTION, &connection,
-1);
if (!connection) {
- /* Top-level type nodes are visible iff they have children */
- return gtk_tree_model_iter_has_child (model, iter);
+ /* Top-level type nodes are visible iff they have visible children */
+ return has_visible_children (self, model, iter);
}
if ( gtk_search_bar_get_search_mode (priv->search_bar)