Index: trunk/src/hid.h =================================================================== --- trunk/src/hid.h (revision 8677) +++ trunk/src/hid.h (revision 8678) @@ -14,7 +14,8 @@ typedef enum { PCB_HID_MOUSE_PRESS, PCB_HID_MOUSE_RELEASE, - PCB_HID_MOUSE_MOTION + PCB_HID_MOUSE_MOTION, + PCB_HID_MOUSE_POPUP /* "right click", open context-specific popup */ } pcb_hid_mouse_ev_t; Index: trunk/src_plugins/hid_lesstif/dlg_preview.c =================================================================== --- trunk/src_plugins/hid_lesstif/dlg_preview.c (revision 8677) +++ trunk/src_plugins/hid_lesstif/dlg_preview.c (revision 8678) @@ -124,6 +124,11 @@ if (pd->mouse_ev(da, kind, cx, cy)) SHOW_DRAW; break; + case PCB_MB_RIGHT: + if (pd->mouse_ev != NULL) + if (pd->mouse_ev(da, PCB_HID_MOUSE_POPUP, cx, cy)) + SHOW_DRAW; + break; case PCB_MB_MIDDLE: if (kind == PCB_HID_MOUSE_PRESS) { pd->pan = 1; Index: trunk/src_plugins/lib_gtk_common/wt_preview.c =================================================================== --- trunk/src_plugins/lib_gtk_common/wt_preview.c (revision 8677) +++ trunk/src_plugins/lib_gtk_common/wt_preview.c (revision 8678) @@ -407,9 +407,9 @@ switch (ghid_mouse_button(ev->button)) { case PCB_MB_RIGHT: preview->view.panning = 0; - if (((time(NULL) - preview->grabt) < 2) && (preview->grabmot < 4)) { - pcb_trace("popup %d!\n", (time(NULL) - preview->grabt), preview->grabmot); - } + if (((time(NULL) - preview->grabt) < 2) && (preview->grabmot < 4)) + if ((preview->mouse_cb != NULL) && (preview->mouse_cb(w, PCB_HID_MOUSE_POPUP, cx, cy))) + gtk_widget_queue_draw(w); break; case PCB_MB_LEFT: if (preview->mouse_cb != NULL) {