fix(sw-header): stabilize measured More while the header grows

Hysteresis fix A for the Open placement regression introduced by 170a5c2.
- Growing: a part its breakpoint brings back (print / K, color, the property
  block, line / text / dimension style, drawing mode) returns only when the
  measured room is there; otherwise it stays in More. Default-layout print / K
  are held through data-actions-held (window area keeps its 640px-tier state).
- Open that came back while growing is not pushed into More again by another
  part; shrinking still moves Open first, and its return width follows the
  narrowest width while it is collapsed.
- Open no longer waits for the parts still in More; the last part leaving More
  takes the More button relief into account (measured, never painted).
- A part released at a width is not held again at that width, so the layout
  passes always settle (fixes the maximum update depth error found on
  sw-header--responsive-more during verification).

Trace 520 -> 1080 (data-width 520 frame): before
[[520,0],[560,0],[600,1],[640,0],[680,0],[720,1],[760,1],[820,1],[900,0],[1080,0]],
after [[520,0],[560,0],[600,1],[640,1],[680,1],[720,1],[760,1],[820,1],[900,1],[1080,1]].
This commit is contained in:
shkim4 committed 2026-10-20 15:18:49 +09:00
1 parent 2b0e1a2262
commit bbb0e71c91
2 files changed
+71 -14

No files matched your search

+5
View File
@@ -1910,6 +1910,11 @@ div.hm-sw-header__menu-row { justify-content: space-between; gap: 8px; padding-l
without the property block More sits at the end of the object area (as < 1080). */
.hm-sw-header__object-area[data-squeezed~="drawingMode"]:not([data-configured]) > .hm-sw-header__fields { padding-left: 4px; }
.hm-sw-header__object-area[data-squeezed~="properties"] > .hm-sw-header__more { margin-left: auto; margin-right: 4px; }
/* Print / K held in More while the header grows (SWHeader data-actions-held, 2026-10-20): the window area keeps the
narrow state of the 640px tier (print / K and the move area hidden, 64px) until the object area has the room they
need. The file name keeps the clamp of the current width, so the measured room is the room they would take back. */
.hm-sw-header[data-actions-held] :is(.hm-sw-header__actions, .hm-sw-header__motion) { display: none; }
.hm-sw-header[data-actions-held] .hm-sw-header__window { flex-basis: 64px; width: 64px; }
/* Logo (home) menu layer (SWHeader homeMenu, 2026-10-19). Top of the header, left / max-width measured from the
object area (−2px) to the window area. Above the property bar anchor (2), under the dropdowns (30) and the