comparison src/view_dir_tree.c @ 1628:738b70daa3af

do not call signal handler from vdtree_row_expanded it fixes tree view for user-entered hidden directories
author nadvornik
date Sat, 06 Jun 2009 15:33:56 +0000
parents 909bf83bf9a4
children f8503019ac38
comparison
equal deleted inserted replaced
1627:909bf83bf9a4 1628:738b70daa3af
38 gchar *name; 38 gchar *name;
39 FileData *node; 39 FileData *node;
40 }; 40 };
41 41
42 42
43 static void vdtree_row_expanded(GtkTreeView *treeview, GtkTreeIter *iter, GtkTreePath *tpath, gpointer data);
43 44
44 45
45 /* 46 /*
46 *---------------------------------------------------------------------------- 47 *----------------------------------------------------------------------------
47 * utils 48 * utils
124 GtkTreeModel *store; 125 GtkTreeModel *store;
125 GtkTreePath *tpath; 126 GtkTreePath *tpath;
126 127
127 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vd->view)); 128 store = gtk_tree_view_get_model(GTK_TREE_VIEW(vd->view));
128 tpath = gtk_tree_model_get_path(store, iter); 129 tpath = gtk_tree_model_get_path(store, iter);
130
129 if (expand) 131 if (expand)
130 { 132 {
133 /* block signal handler, icon is set here, the caller of vdtree_expand_by_iter must make sure
134 that the iter is populated */
135 g_signal_handlers_block_by_func(G_OBJECT(vd->view), vdtree_row_expanded, vd);
131 gtk_tree_view_expand_row(GTK_TREE_VIEW(vd->view), tpath, FALSE); 136 gtk_tree_view_expand_row(GTK_TREE_VIEW(vd->view), tpath, FALSE);
132 vdtree_icon_set_by_iter(vd, iter, vd->pf->open); 137 vdtree_icon_set_by_iter(vd, iter, vd->pf->open);
138 g_signal_handlers_unblock_by_func(G_OBJECT(vd->view), vdtree_row_expanded, vd);
133 } 139 }
134 else 140 else
135 { 141 {
142 /* signal handler vdtree_row_collapsed is called, it updates the icon */
136 gtk_tree_view_collapse_row(GTK_TREE_VIEW(vd->view), tpath); 143 gtk_tree_view_collapse_row(GTK_TREE_VIEW(vd->view), tpath);
137 } 144 }
138 gtk_tree_path_free(tpath); 145 gtk_tree_path_free(tpath);
139 } 146 }
140 147