# HG changeset patch # User nadvornik # Date 1237157185 0 # Node ID 76da5ba54a1de5bfa2dc203ed364b4f901b7e3f2 # Parent 89dedc61b1bdaa770e1abf4ee347930a7a47ebd8 call the notify function just once when the keywords are pushed to the textarea diff -r 89dedc61b1bd -r 76da5ba54a1d src/bar_keywords.c --- a/src/bar_keywords.c Sun Mar 15 20:16:20 2009 +0000 +++ b/src/bar_keywords.c Sun Mar 15 22:46:25 2009 +0000 @@ -53,6 +53,7 @@ return list; } +/* the "changed" signal should be blocked before calling this */ static void keyword_list_push(GtkWidget *textview, GList *list) { GtkTextBuffer *buffer; @@ -279,6 +280,8 @@ GtkTreeIter child_iter; GtkTreeModel *keyword_tree; + GtkTextBuffer *keyword_buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(pkd->keyword_view)); + model = gtk_tree_view_get_model(GTK_TREE_VIEW(pkd->keyword_treeview)); tpath = gtk_tree_path_new_from_string(path); @@ -297,11 +300,16 @@ keyword_tree_set(keyword_tree, &child_iter, &list); else keyword_tree_reset(keyword_tree, &child_iter, &list); - + + g_signal_handlers_block_by_func(keyword_buffer, bar_pane_keywords_changed, pkd); keyword_list_push(pkd->keyword_view, list); string_list_free(list); + g_signal_handlers_unblock_by_func(keyword_buffer, bar_pane_keywords_changed, pkd); + + /* call this just once in the end */ + bar_pane_keywords_changed(keyword_buffer, pkd); /* - keyword_list_push triggers bar_pane_keywords_change which calls bar_keyword_tree_sync, no need to do it again + bar_pane_keywords_change calls bar_keyword_tree_sync, no need to do it again bar_keyword_tree_sync(pkd); */ }