From 612677bda8ae80e94ab84ef8400e63e5a6549fb9 Mon Sep 17 00:00:00 2001 From: "Michael J. Chudobiak" Date: Wed, 2 May 2012 09:37:08 -0400 Subject: [PATCH] When changing layers, keep insertion points in the original range --- src/change.c | 23 +++++++++++++++++++++-- 1 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/change.c b/src/change.c index 59bf4a4..c5f201a 100644 --- a/src/change.c +++ b/src/change.c @@ -1647,13 +1647,32 @@ ChangeSelectedElementSide (void) { bool change = false; - /* setup identifiers */ + Coord miny = PCB->MaxHeight; + Coord maxy = 0; + Coord yoff = 0; + + /* Locate min and max markY insertion points */ + if (PCB->PinOn && PCB->ElementOn) + ELEMENT_LOOP (PCB->Data); + { + if (TEST_FLAG (SELECTEDFLAG, element)) + { + miny = MIN(miny, element->MarkY); + maxy = MAX(maxy, element->MarkY); + } + } + END_LOOP; + + /* Add an offset to keep the new min and max markY + insertion points within the same range as before */ + yoff = (miny+maxy) - PCB->MaxHeight; + if (PCB->PinOn && PCB->ElementOn) ELEMENT_LOOP (PCB->Data); { if (TEST_FLAG (SELECTEDFLAG, element)) { - change |= ChangeElementSide (element, 0); + change |= ChangeElementSide (element, yoff); } } END_LOOP; -- 1.7.7.6