The rotate-preview path was projecting subtree clipStack entries through \`rotatePreviewRect\` — but that helper only rotates the rect's CENTER and keeps the original w/h axis-aligned. For non-zero angles that places the clip rectangle in a wrong scene location: it's neither the original position nor a faithful representation of the rotated bounds. ClipInfo is axis-aligned by construction, so the only correct scene-coord representation of a rotated clip is its AABB (the bounding box of the 4 rotated corners). Slightly over-clips along the rotated rect's diagonal but is correct along its axes — and matters most for the common case (target is rotated mostly in 0/90/180/270 increments where AABB == rect). Also drops \`rx\` to 0 for rotated entries: the AABB of a rotated rrect is a rectangle with no faithful rrect approximation, so a rectangular clip is the safest fallback. Added \`rotatedAABB\` helper alongside the existing \`rotatePreviewRect\`. The bounds-rotation behavior of subtree nodes is unchanged (still uses center-translated rect for absX/absY/absW/absH, since canvas.rotate handles paint rotation regardless of bounds form). |
||
|---|---|---|
| .. | ||
| cli | ||
| desktop | ||
| web | ||