[gnome-builder] tree: implement treeview level search
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] tree: implement treeview level search
- Date: Sun, 19 Apr 2015 01:56:52 +0000 (UTC)
commit e1bc9672144c5790f1ae870c938709599a08628e
Author: Christian Hergert <christian hergert me>
Date: Sat Apr 18 18:56:08 2015 -0700
tree: implement treeview level search
It's not super useful, since it doesn't recurse into children, but it is
a feature of GtkTreeView and we should at least support it.
We might want to, instead, setup filtering later on.
src/tree/gb-tree.c | 34 ++++++++++++++++++++++++++++++++++
1 files changed, 34 insertions(+), 0 deletions(-)
---
diff --git a/src/tree/gb-tree.c b/src/tree/gb-tree.c
index 66ba186..8ab0cef 100644
--- a/src/tree/gb-tree.c
+++ b/src/tree/gb-tree.c
@@ -1147,6 +1147,35 @@ gb_tree_real_action (GbTree *self,
gb_widget_activate_action (GTK_WIDGET (self), prefix, action_name, variant);
}
+static gboolean
+gb_tree_default_search_equal_func (GtkTreeModel *model,
+ gint column,
+ const gchar *key,
+ GtkTreeIter *iter,
+ gpointer user_data)
+{
+ GbTreeNode *node = NULL;
+ gboolean ret = TRUE;
+
+ g_assert (GTK_IS_TREE_MODEL (model));
+ g_assert (column == 0);
+ g_assert (key != NULL);
+ g_assert (iter != NULL);
+
+ gtk_tree_model_get (model, iter, 0, &node, -1);
+
+ if (node != NULL)
+ {
+ const gchar *text;
+
+ text = gb_tree_node_get_text (node);
+ ret = !(strstr (key, text) != NULL);
+ g_object_unref (node);
+ }
+
+ return ret;
+}
+
/**
* gb_tree_finalize:
* @object: (in): A #GbTree.
@@ -1364,6 +1393,11 @@ gb_tree_init (GbTree *tree)
gtk_tree_view_set_model (GTK_TREE_VIEW (tree),
GTK_TREE_MODEL (tree->priv->store));
+ gtk_tree_view_set_search_equal_func (GTK_TREE_VIEW (tree),
+ gb_tree_default_search_equal_func,
+ NULL, NULL);
+ gtk_tree_view_set_search_column (GTK_TREE_VIEW (tree), 0);
+
g_signal_connect (tree, "row-activated",
G_CALLBACK (gb_tree_row_activated),
NULL);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]