From 1273e58d594909eb7688946fc41ab514f913b3b3 Mon Sep 17 00:00:00 2001 From: Daniel Micay Date: Tue, 18 Sep 2012 18:17:22 -0400 Subject: [PATCH] GTree -> std::set --- termite.cc | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/termite.cc b/termite.cc index 8a99ba2..aab857a 100644 --- a/termite.cc +++ b/termite.cc @@ -4,6 +4,7 @@ #include #include #include +#include #include #include @@ -75,7 +76,6 @@ static gboolean button_press_cb(VteTerminal *vte, GdkEventButton *event, gboolea static void beep_cb(GtkWidget *vte, gboolean *urgent_on_bell); static gboolean focus_cb(GtkWindow *window); -static gboolean add_to_list_store(char *key, void *, GtkListStore *store); static GtkTreeModel *create_completion_model(VteTerminal *vte); static void search(VteTerminal *vte, const char *pattern, bool reverse); static void overlay_show(search_panel_info *info, overlay_mode mode, bool complete); @@ -655,13 +655,6 @@ gboolean focus_cb(GtkWindow *window) { } /* }}} */ -gboolean add_to_list_store(char *key, void *, GtkListStore *store) { - GtkTreeIter iter; - gtk_list_store_append(store, &iter); - gtk_list_store_set(store, &iter, 0, key, -1); - return FALSE; -} - GtkTreeModel *create_completion_model(VteTerminal *vte) { GtkListStore *store = gtk_list_store_new(1, G_TYPE_STRING); @@ -677,18 +670,23 @@ GtkTreeModel *create_completion_model(VteTerminal *vte) { char *s_ptr = content, *saveptr; - GTree *tree = g_tree_new((GCompareFunc)strcmp); + auto less = [](const char *a, const char *b) { return strcmp(a, b) < 0; }; + std::set tokens(less); for (; ; s_ptr = NULL) { char *token = strtok_r(s_ptr, " \n\t", &saveptr); if (!token) { break; } - g_tree_insert(tree, token, NULL); + tokens.insert(token); + } + + for (const char *token : tokens) { + GtkTreeIter iter; + gtk_list_store_append(store, &iter); + gtk_list_store_set(store, &iter, 0, token, -1); } - g_tree_foreach(tree, (GTraverseFunc)add_to_list_store, store); - g_tree_destroy(tree); g_free(content); return GTK_TREE_MODEL(store); }