Index: layersel/layersel.c =================================================================== --- layersel/layersel.c (revision 8543) +++ layersel/layersel.c (revision 8544) @@ -107,6 +107,19 @@ /*** Event handling ***/ +static gboolean group_vis_press_cb(GtkWidget *widget, GdkEvent *event, layersel_grp_t *lsg) +{ + switch(event->button.button) { + case 1: + printf("TODO: group vis change\n"); + break; + case 3: + pcb_hid_actionl("Popup", "group", NULL); + break; + } + return TRUE; +} + static gboolean layer_vis_press_cb(GtkWidget *widget, GdkEvent *event, gpointer user_data) { layersel_layer_t *lsl = user_data; @@ -206,7 +219,7 @@ return lsl->box; } -static GtkWidget *build_group_start(pcb_gtk_layersel_t *ls, layersel_grp_t *lsg, const char *gname) +static GtkWidget *build_group_start(pcb_gtk_layersel_t *ls, layersel_grp_t *lsg, const char *gname, int has_group_vis) { GtkWidget *gn_vert, *vlabel, *opn, *cld; @@ -242,6 +255,11 @@ gtk_misc_set_alignment(GTK_MISC(vlabel), 0, 1); gtk_widget_set_size_request(vlabel, 32, 1); + if (has_group_vis) { + GtkWidget *vis; + vis = wrap_bind_click(layer_vis_box(0, "#ff0000"), G_CALLBACK(group_vis_press_cb), lsg); + gtk_box_pack_start(GTK_BOX(lsg->grp_closed), vis, FALSE, FALSE, 0); + } cld = wrap_bind_click(gtk_label_new(gname), G_CALLBACK(group_open_press_cb), lsg); gtk_box_pack_start(GTK_BOX(lsg->grp_closed), cld, FALSE, FALSE, 0); @@ -259,7 +277,7 @@ static GtkWidget *build_group_real(pcb_gtk_layersel_t *ls, layersel_grp_t *lsg, const char *gname) { int n; - GtkWidget *wg = build_group_start(ls, lsg, gname); + GtkWidget *wg = build_group_start(ls, lsg, gname, 1); /* install layers */ for(n = 0; n < 4; n++) { @@ -290,7 +308,7 @@ { /* build hardwired virtual layers */ layersel_grp_t *lsg = &ls->grp[3]; - gtk_box_pack_start(GTK_BOX(main_box), build_group_start(ls, lsg, "Virtual"), FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(main_box), build_group_start(ls, lsg, "Virtual", 0), FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(lsg->layers), build_layer(lsg, &lsg->layer[0], "Pins/Pads"), FALSE, FALSE, 1); gtk_box_pack_start(GTK_BOX(lsg->layers), build_layer(lsg, &lsg->layer[1], "Vias"), FALSE, FALSE, 1); gtk_box_pack_start(GTK_BOX(lsg->layers), build_layer(lsg, &lsg->layer[2], "Far side"), FALSE, FALSE, 1);