Index: trunk/src/change.c =================================================================== --- trunk/src/change.c (revision 16292) +++ trunk/src/change.c (revision 16293) @@ -739,10 +739,9 @@ * The allocated memory isn't freed because the old string is used * by the undo module. */ -void *pcb_chg_obj_name_query(int Type, void *Ptr1, void *Ptr2, void *Ptr3) +void *pcb_chg_obj_name_query(pcb_any_obj_t *obj) { char *name = NULL; - pcb_any_obj_t *obj = Ptr2; pcb_subc_t *parent_subc; parent_subc = pcb_obj_parent_subc(obj); @@ -752,29 +751,33 @@ pcb_term_undoable_rename(PCB, obj, name); pcb_draw(); } - return Ptr3; + return obj; } - switch (Type) { + switch(obj->type) { case PCB_OBJ_TEXT: - name = pcb_gui->prompt_for(_("Enter text:"), PCB_EMPTY(((pcb_text_t *) Ptr2)->TextString)); + name = pcb_gui->prompt_for(_("Enter text:"), PCB_EMPTY(((pcb_text_t *)obj)->TextString)); break; case PCB_OBJ_SUBC: - name = pcb_gui->prompt_for(_("Subcircuit refdes:"), PCB_EMPTY(((pcb_subc_t *)Ptr2)->refdes)); + name = pcb_gui->prompt_for(_("Subcircuit refdes:"), PCB_EMPTY(((pcb_subc_t *)obj)->refdes)); break; + + default: + break; } + if (name) { /* NB: ChangeObjectName takes ownership of the passed memory */ char *old; - old = (char *) pcb_chg_obj_name(Type, Ptr1, Ptr2, Ptr3, name); + old = (char *) pcb_chg_obj_name(obj->type, obj->parent.any, obj, obj, name); if (old != (char *) -1) { - pcb_undo_add_obj_to_change_name(Type, Ptr1, Ptr2, Ptr3, old); + pcb_undo_add_obj_to_change_name(obj->type, obj->parent.any, obj, obj, old); pcb_undo_inc_serial(); } pcb_draw(); - return Ptr3; + return obj; } return NULL; } Index: trunk/src/change.h =================================================================== --- trunk/src/change.h (revision 16292) +++ trunk/src/change.h (revision 16293) @@ -86,7 +86,7 @@ pcb_bool pcb_clr_obj_join(int, void *, void *, void *); pcb_bool pcb_chg_obj_nonetlist(int Type, void *Ptr1, void *Ptr2, void *Ptr3); void *pcb_chg_obj_name(int, void *, void *, void *, char *); -void *pcb_chg_obj_name_query(int, void *, void *, void *); +void *pcb_chg_obj_name_query(pcb_any_obj_t *obj); pcb_bool pcb_chg_obj_radius(int Type, void *Ptr1, void *Ptr2, void *Ptr3, int is_x, pcb_coord_t r, pcb_bool absolute); pcb_bool pcb_chg_obj_angle(int Type, void *Ptr1, void *Ptr2, void *Ptr3, int is_start, pcb_angle_t a, pcb_bool absolute); pcb_bool pcb_chg_selected_angle(int types, int is_start, pcb_angle_t Difference, pcb_bool fixIt); Index: trunk/src/change_act.c =================================================================== --- trunk/src/change_act.c (revision 16292) +++ trunk/src/change_act.c (revision 16293) @@ -561,7 +561,7 @@ if ((type = pcb_search_screen(x, y, type, &ptr1, &ptr2, &ptr3)) != PCB_OBJ_VOID) { pcb_undo_save_serial(); pinnum = 0; - if (pcb_chg_obj_name_query(type, ptr1, ptr2, ptr3)) { + if (pcb_chg_obj_name_query(ptr2)) { pcb_redraw(); pcb_board_set_changed_flag(pcb_true); pcb_event(PCB_EVENT_RUBBER_RENAME, "ipppi", type, ptr1, ptr2, ptr3, pinnum);