Index: work/gtk/layersel/layersel.c =================================================================== --- work/gtk/layersel/layersel.c (revision 8524) +++ work/gtk/layersel/layersel.c (revision 8525) @@ -3,6 +3,9 @@ #include "layersel.h" #include "lib_gtk_common/compat.h" +#warning TEMPORARY HACK: +#define pcb_hid_actionl(a, b, c) printf("action: " a b "\n") + /*** Layer visibility widget rendering ***/ #define set_pixel(dst, r, g, b, a) \ do { \ @@ -102,23 +105,40 @@ static gboolean layer_vis_press_cb(GtkWidget *widget, GdkEvent *event, gpointer user_data) { layersel_layer_t *lsl = user_data; - lsl->on = !lsl->on; - layer_vis_sync(lsl); + switch(event->button.button) { + case 1: + lsl->on = !lsl->on; + layer_vis_sync(lsl); + break; + case 3: + pcb_hid_actionl("Popup", "layer", NULL); + break; + } return TRUE; } -static gboolean group_close_press_cb(GtkWidget *widget, GdkEvent *event, layersel_grp_t *lsg) +static gboolean group_any_press_cb(GtkWidget *widget, GdkEvent *event, layersel_grp_t *lsg, int onval) { - lsg->on = 0; - group_vis_sync(lsg); + switch(event->button.button) { + case 1: + lsg->on = onval; + group_vis_sync(lsg); + break; + case 3: + pcb_hid_actionl("Popup", "group", NULL); + break; + } return TRUE; } +static gboolean group_close_press_cb(GtkWidget *widget, GdkEvent *event, layersel_grp_t *lsg) +{ + return group_any_press_cb(widget, event, lsg, 0); +} + static gboolean group_open_press_cb(GtkWidget *widget, GdkEvent *event, layersel_grp_t *lsg) { - lsg->on = 1; - group_vis_sync(lsg); - return TRUE; + return group_any_press_cb(widget, event, lsg, 1); } /** Wrap w so that clicks on it are triggering a callback */