};
/* instantiate the node vector type */
-VECTOR_TYPE(nodevector, struct choosenode *, xrealloc)
+
+VECTOR_TYPE(nodevector, struct choosenode *, xrealloc);
struct choosenode {
struct choosenode *parent; /* parent node */
* A non-expandable item has just a text label and no arrow.
*/
if(!cn->container) {
- MTAG_PUSH("make_widgets");
+ 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);
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))
}
static gboolean sensitive_play(struct choosenode attribute((unused)) *cn) {
- return !!files_selected;
+ return (!!files_selected
+ && (disorder_eclient_state(client) & DISORDER_CONNECTED));
}
#if 0
#endif
static gboolean sensitive_properties(struct choosenode attribute((unused)) *cn) {
- return !!files_selected;
+ return !!files_selected && (disorder_eclient_state(client) & DISORDER_CONNECTED);
}
/* Main menu plumbing ------------------------------------------------------ */
static int choose_properties_sensitive(GtkWidget attribute((unused)) *w) {
- return !!files_selected;
+ return !!files_selected && (disorder_eclient_state(client) & DISORDER_CONNECTED);
}
static int choose_selectall_sensitive(GtkWidget attribute((unused)) *w) {