Branch: refs/heads/master Author: Colomban Wendling ban@herbesfolles.org Committer: Colomban Wendling ban@herbesfolles.org Date: Sat, 04 Aug 2012 15:08:40 Commit: c9bf807fca29ab418b39743c624cd49bfed22c34 https://github.com/geany/geany-plugins/commit/c9bf807fca29ab418b39743c624cd4...
Log Message: ----------- commander: Drop filtering an fix resorting
Modified Paths: -------------- commander/src/commander-plugin.c
Modified: commander/src/commander-plugin.c 83 files changed, 17 insertions(+), 66 deletions(-) =================================================================== @@ -56,13 +56,12 @@ struct { GtkWidget *entry; GtkWidget *view; GtkListStore *store; - GtkTreeModel *filter; GtkTreeModel *sort;
GtkTreePath *last_path; } plugin_data = { NULL, NULL, NULL, - NULL, NULL, NULL, + NULL, NULL, NULL };
@@ -82,36 +81,6 @@ enum { };
-static gboolean -key_matches (const gchar *key_, - const gchar *text_) -{ - gchar *text; - gchar *key; - gchar *text_p; - gchar *key_p; - gboolean result; - - text_p = text = g_utf8_casefold (text_, -1); - key_p = key = g_utf8_casefold (key_, -1); - - while (*key_p && *text_p) { - if (*text_p == *key_p) { - text_p ++; - key_p ++; - } else { - text_p ++; - } - } - - result = *key_p == 0; - - g_free (text); - g_free (key); - - return result; -} - /* TODO: improve this algorithm for better matches. * what's needed is probably not to simply eat a letter when it matches, but * rather give it a chance to provide an heavier match... whatever, be smart. */ @@ -209,26 +178,6 @@ enum { return dista - distb; }
-static gboolean -filter_visible_func (GtkTreeModel *model, - GtkTreeIter *iter, - gpointer dummy) -{ - gboolean visible = FALSE; - gchar *text; - gint type; - gint key_type; - const gchar *key = get_key (&key_type); - - gtk_tree_model_get (model, iter, COL_PATH, &text, COL_TYPE, &type, -1); - if (type & key_type) { - visible = key_matches (key, text); - } - g_free (text); - - return visible; -} - static void tree_view_set_active_cell (GtkTreeView *view, GtkTreeIter *iter) @@ -354,12 +303,20 @@ enum { GParamSpec *pspec, gpointer dummy) { - GtkTreeIter iter; + GtkTreeIter iter; + GtkTreeView *view = GTK_TREE_VIEW (plugin_data.view); + GtkTreeModel *model = gtk_tree_view_get_model (view);
- gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (plugin_data.filter)); + /* we force re-sorting the whole model from how it was before, and the + * back to the new filter. this is somewhat hackish but since we don't + * know the original sorting order, and GtkTreeSortable don't have a + * resort() API anyway. */ + gtk_tree_model_sort_reset_default_sort_func (GTK_TREE_MODEL_SORT (model)); + gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (model), + sort_func, NULL, NULL);
- if (gtk_tree_model_get_iter_first (plugin_data.sort, &iter)) { - tree_view_set_active_cell (GTK_TREE_VIEW (plugin_data.view), &iter); + if (gtk_tree_model_get_iter_first (model, &iter)) { + tree_view_set_active_cell (view, &iter); } }
@@ -540,7 +497,7 @@ enum { NULL, NULL)) { GtkTreeIter iter;
- if (gtk_tree_model_get_iter_first (plugin_data.sort, &iter)) { + if (gtk_tree_model_get_iter_first (gtk_tree_view_get_model (view), &iter)) { tree_view_set_active_cell (GTK_TREE_VIEW (plugin_data.view), &iter); } } @@ -633,16 +590,10 @@ enum { GTK_TYPE_WIDGET, G_TYPE_POINTER);
- plugin_data.filter = gtk_tree_model_filter_new (GTK_TREE_MODEL (plugin_data.store), - NULL); - gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (plugin_data.filter), - filter_visible_func, NULL, NULL); - - plugin_data.sort = gtk_tree_model_sort_new_with_model (plugin_data.filter); - gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (plugin_data.sort), - COL_PATH, sort_func, NULL, NULL); + plugin_data.sort = gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (plugin_data.store)); gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (plugin_data.sort), - COL_PATH, GTK_SORT_ASCENDING); + GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID, + GTK_SORT_ASCENDING);
scroll = g_object_new (GTK_TYPE_SCROLLED_WINDOW, "hscrollbar-policy", GTK_POLICY_AUTOMATIC,
@@ Diff output truncated at 100000 characters. @@
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: TBD).