From 8d0f20ebc25d0308207792bd5b978e4c7d2bd38a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Go=C5=82embiewski?= Date: Tue, 22 Sep 2026 11:43:47 +0200 Subject: [PATCH] fix: place a merge, a lane and the next statement where the measurer says Three fixed-size disagreements between what measureStatements predicts and where the builder puts things. Every merge, every following statement and every branch lane is positioned from the first and drawn by the second, so a few pixels of disagreement is an overlap rather than a cosmetic difference. Measured on mdl-examples/doctype-tests/02c-complex-layout-examples.mdl: 15 overlapping pairs in 3 of its 6 flows, down to none. mx check reports 0 errors either way, which is why none of this was visible to anything automatic. - A split was measured to its branch rather than to the merge that closes it - 25px short of what a following element has to clear. splitWidthWithMerge now measures from the split's left edge to the merge's right edge. - The advance past a merge came from its centre by what an activity's half width needs: half a pitch is 80px and a merge is 40 wide against an activity's 120, so the next element's left edge landed on the merge's right edge. The enum split's own merge and `merge