From b08c785c1dc71d3e006cbdc1a7a6db75f7dd1812 Mon Sep 17 00:00:00 2001 From: Tim Edwards Date: Sun, 21 Jan 2024 16:29:02 -0500 Subject: [PATCH] One correction to the previous commit to restore the original behavior when a child coordinate is not specified; otherwise, the original code's setting of the child reference point to the bounding box lower left causes the lower left point to be used always, which is not how the getcell command is supposed to function. --- commands/CmdCD.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/commands/CmdCD.c b/commands/CmdCD.c index d0f39ed5..edd80361 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, refpoint; + Point childPoint, editPoint, rootPoint; CellDef *def, *rootDef, *editDef; bool hasChild, hasRoot, hasTrans; Rect rootBox, bbox; @@ -5254,9 +5254,19 @@ cmdDumpParseArgs(cmdName, w, cmd, dummy, scx) scx->scx_use = dummy; /* Transform childPoint by trans_cell */ - GeoTransPoint(&trans_cell, &childPoint, &refpoint); - GeoTranslateTrans(&trans_cell, rootPoint.p_x - refpoint.p_x, + if (hasChild) + { + Point refpoint; + + GeoTransPoint(&trans_cell, &childPoint, &refpoint); + GeoTranslateTrans(&trans_cell, rootPoint.p_x - refpoint.p_x, rootPoint.p_y - refpoint.p_y, &scx->scx_trans); + } + else + { + GeoTranslateTrans(&trans_cell, rootPoint.p_x - childPoint.p_x, + rootPoint.p_y - childPoint.p_y, &scx->scx_trans); + } scx->scx_area = bbox; return TRUE;