From 7f5571768f597c7746d125731d652aed6816cd5b Mon Sep 17 00:00:00 2001 From: Tim Edwards Date: Sun, 21 Jan 2024 15:54:49 -0500 Subject: [PATCH] Corrected a long-standing error, which caused "getcell child " to place a cell in a meaningless position for any rotation and flip combination other than zero. The issue was that the reference point was not rotated along with the cell. --- commands/CmdCD.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/commands/CmdCD.c b/commands/CmdCD.c index d28dc01e..d0f39ed5 100644 --- a/commands/CmdCD.c +++ b/commands/CmdCD.c @@ -4814,7 +4814,7 @@ cmdDumpParseArgs(cmdName, w, cmd, dummy, scx) * cell itself. */ { - Point childPoint, editPoint, rootPoint; + Point childPoint, editPoint, rootPoint, refpoint; CellDef *def, *rootDef, *editDef; bool hasChild, hasRoot, hasTrans; Rect rootBox, bbox; @@ -5253,9 +5253,11 @@ box_error: scx->scx_use = dummy; - GeoTranslateTrans(&trans_cell, rootPoint.p_x - childPoint.p_x, - rootPoint.p_y - childPoint.p_y, - &scx->scx_trans); + /* Transform childPoint by trans_cell */ + GeoTransPoint(&trans_cell, &childPoint, &refpoint); + GeoTranslateTrans(&trans_cell, rootPoint.p_x - refpoint.p_x, + rootPoint.p_y - refpoint.p_y, &scx->scx_trans); + scx->scx_area = bbox; return TRUE;