};
/* instantiate the node vector type */
-VECTOR_TYPE(nodevector, struct choosenode *, xrealloc)
+
+VECTOR_TYPE(nodevector, struct choosenode *, xrealloc);
struct choosenode {
struct choosenode *parent; /* parent node */
D(("fill_search_node %s", cn->path));
/* We depend on the search results being sorted as by compare_path(). */
- cn->children.nvec = 0;
+ clear_children(cn);
for(n = 0; n < nsearchresults; ++n) {
/* We only care about descendants of CN */
if(!is_descendant(cn->path, searchresults[n]))
files_selected = 0;
files_visible = 0;
/* Correct the layout and find out how much space it uses */
+ MTAG_PUSH("display_tree");
d = display_tree(root, 0, 0);
+ MTAG_POP();
/* We must set the total size or scrolling will not work (it wouldn't be hard
* for GtkLayout to figure it out for itself but presumably you're supposed
* to be able to have widgets off the edge of the layuot.)
* A non-expandable item has just a text label and no arrow.
*/
if(!cn->container) {
+ MTAG_PUSH("make_widgets_1");
/* Widgets need to be created */
NW(hbox);
cn->hbox = gtk_hbox_new(FALSE, 1);
cn->marker = gtk_image_new_from_pixbuf(pb);
}
}
+ MTAG_POP();
+ MTAG_PUSH("make_widgets_2");
NW(label);
cn->label = gtk_label_new(cn->display);
if(cn->arrow)
gtk_container_add(GTK_CONTAINER(cn->hbox), cn->label);
if(cn->marker)
gtk_container_add(GTK_CONTAINER(cn->hbox), cn->marker);
+ MTAG_POP();
+ MTAG_PUSH("make_widgets_3");
NW(event_box);
cn->container = gtk_event_box_new();
gtk_container_add(GTK_CONTAINER(cn->container), cn->hbox);
gtk_widget_set_name(cn->container, "choose");
/* Show everything by default */
gtk_widget_show_all(cn->container);
+ MTAG_POP();
}
assert(cn->container);
/* Make sure the icon is right */
else {
gtk_layout_put(GTK_LAYOUT(chooselayout), cn->container, x, y);
cn->flags |= CN_DISPLAYED;
+ /* Now chooselayout has a ref to the container */
+ g_object_unref(cn->container);
}
/* Set the widget's selection status */
if(!(cn->flags & CN_EXPANDABLE))