Index: trunk/src/obj_pstk.c =================================================================== --- trunk/src/obj_pstk.c (revision 13046) +++ trunk/src/obj_pstk.c (revision 13047) @@ -675,6 +675,7 @@ pcb_poly_restore_to_poly(ps->parent.data, PCB_TYPE_PSTK, NULL, ps); pcb_pstk_invalidate_erase(ps); + pcb_r_delete_entry(ps->parent.data->padstack_tree, (pcb_box_t *)ps); swap(ps->proto, u->proto, pcb_cardinal_t); swap(ps->Clearance, u->clearance, pcb_coord_t); @@ -685,6 +686,8 @@ ps->protoi = -1; pcb_pstk_get_tshape(ps); + pcb_pstk_bbox(ps); + pcb_r_insert_entry(ps->parent.data->padstack_tree, (pcb_box_t *)ps, 0); pcb_poly_clear_from_poly(ps->parent.data, PCB_TYPE_PSTK, NULL, ps); pcb_pstk_invalidate_draw(ps); Index: trunk/src/obj_pstk_op.c =================================================================== --- trunk/src/obj_pstk_op.c (revision 13046) +++ trunk/src/obj_pstk_op.c (revision 13047) @@ -186,9 +186,21 @@ if (pcb_pstk_change_instance(ps, NULL, NULL, &rot, NULL) == 0) { pcb_coord_t nx = ps->x, ny = ps->y; + + + pcb_poly_restore_to_poly(ps->parent.data, PCB_TYPE_PSTK, NULL, ps); + pcb_pstk_invalidate_erase(ps); + pcb_r_delete_entry(ps->parent.data->padstack_tree, (pcb_box_t *)ps); + pcb_rotate(&nx, &ny, ctx->rotate.center_x, ctx->rotate.center_y, ctx->rotate.cosa, ctx->rotate.sina); if ((nx != ps->x) || (ny != ps->y)) pcb_pstk_move(ps, nx - ps->x, ny - ps->y); + + pcb_pstk_bbox(ps); + pcb_r_insert_entry(ps->parent.data->padstack_tree, (pcb_box_t *)ps, 0); + pcb_poly_clear_from_poly(ps->parent.data, PCB_TYPE_PSTK, NULL, ps); + pcb_pstk_invalidate_draw(ps); + return ps; } return NULL;