gboolean ghid_note_event_location (GdkEventButton * ev) { gint event_x, event_y; gboolean moved; if (!ev) { gdk_window_get_pointer (gtk_widget_get_window (ghid_port.drawing_area), &event_x, &event_y, NULL); } else { event_x = ev->x; event_y = ev->y; } ghid_event_to_pcb_coords (event_x, event_y, &gport->pcb_x, &gport->pcb_y); moved = MoveCrosshairAbsolute (gport->pcb_x, gport->pcb_y); if (moved) { AdjustAttachedObjects (); notify_crosshair_change (true); } ghid_set_cursor_position_labels (); return moved; }
gboolean ghid_note_event_location (GdkEventButton * ev) { gint x, y; gboolean moved; if (!ev) { gdk_window_get_pointer (ghid_port.drawing_area->window, &x, &y, NULL); event_x = x; event_y = y; } else { event_x = ev->x; event_y = ev->y; } gport->view_x = event_x * gport->zoom + gport->view_x0; gport->view_y = event_y * gport->zoom + gport->view_y0; moved = MoveCrosshairAbsolute (SIDE_X (gport->view_x), SIDE_Y (gport->view_y)); if (moved) { AdjustAttachedObjects (); RestoreCrosshair (false); } ghid_set_cursor_position_labels (); return moved; }
static void netnode_browse (Widget w, XtPointer v, XmListCallbackStruct * cbs) { LibraryMenuType *menu = PCB->NetlistLib.Menu + last_pick; char *name = menu->Entry[cbs->item_position - 1].ListEntry; char *ename, *pname; ename = strdup (name); pname = strchr (ename, '-'); if (! pname) { free (ename); return; } *pname++ = 0; ELEMENT_LOOP (PCB->Data); { char *es = element->Name[NAMEONPCB_INDEX].TextString; if (es && strcmp (es, ename) == 0) { PIN_LOOP (element); { if (strcmp (pin->Number, pname) == 0) { MoveCrosshairAbsolute (pin->X, pin->Y); free (ename); return; } } END_LOOP; PAD_LOOP (element); { if (strcmp (pad->Number, pname) == 0) { int x = (pad->Point1.X + pad->Point2.X) / 2; int y = (pad->Point1.Y + pad->Point2.Y) / 2; gui->set_crosshair (x, y, HID_SC_PAN_VIEWPORT); free (ename); return; } } END_LOOP; } } END_LOOP; free (ename); }