Index: trunk/src_plugins/lib_gtk_common/wt_preview.c =================================================================== --- trunk/src_plugins/lib_gtk_common/wt_preview.c (revision 8674) +++ trunk/src_plugins/lib_gtk_common/wt_preview.c (revision 8675) @@ -356,6 +356,8 @@ preview->view.panning = 1; preview->grabx = cx; preview->graby = cy; + preview->grabt = time(NULL); + preview->grabmot = 0; break; case PCB_MB_SCROLL_UP: pcb_gtk_zoom_view_rel(&preview->view, 0, 0, 0.8); @@ -397,16 +399,20 @@ static gboolean preview_button_release_cb(GtkWidget * w, GdkEventButton * ev, gpointer data) { pcb_gtk_preview_t *preview = (pcb_gtk_preview_t *) w; + gint wx, wy; + pcb_coord_t cx, cy; + get_ptr(preview, &cx, &cy, &wx, &wy); + 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); + } break; case PCB_MB_LEFT: if (preview->mouse_cb != NULL) { - pcb_coord_t cx, cy; - gint wx, wy; - get_ptr(preview, &cx, &cy, &wx, &wy); /* pcb_printf("br %mm %mm\n", cx, cy); */ if (preview->mouse_cb(w, PCB_HID_MOUSE_RELEASE, cx, cy)) gtk_widget_queue_draw(w); @@ -425,6 +431,7 @@ get_ptr(preview, &cx, &cy, &wx, &wy); if (preview->view.panning) { + preview->grabmot++; preview->view.x0 = preview->grabx - wx * preview->view.coord_per_px; preview->view.y0 = preview->graby - wy * preview->view.coord_per_px; update_expose_data(preview); Index: trunk/src_plugins/lib_gtk_common/wt_preview.h =================================================================== --- trunk/src_plugins/lib_gtk_common/wt_preview.h (revision 8674) +++ trunk/src_plugins/lib_gtk_common/wt_preview.h (revision 8675) @@ -93,6 +93,8 @@ pcb_gtk_preview_mouse_ev_t mouse_cb; pcb_hid_expose_t overlay_draw_cb; pcb_coord_t grabx, graby; + time_t grabt; + long grabmot; pcb_element_t element;