fix(shell): keep an overflow:hidden fallback beneath clip + guard the cascade
shift fix) — but as a BARE declaration. Engines without clip support (Safari < 16, older Chromium) drop an unsupported declaration at parse time, which leaves the host `overflow: visible`: no clipping at all, and the historical "collapsed panels extend the document's scrollable area, whole page draggable" regression returns on those engines. Declare `overflow: hidden` BEFORE `overflow: clip`: clip-aware engines apply the later clip (identical behavior to #453), while old engines fall back to hidden and keep clipping (with its pre-clip scrollability — the same state they had before #453, strictly better than visible). The cascade order is the contract. Also extends the rule comment (the fix guards the whole scroll-into-view class — focus moving into off-viewport regions, nested iframes/workbenches claiming focus while loading — not just the reveal case) and adds tests/panel-host-css.spec.ts guarding the cascade (hidden first, clip last), the fixed viewport layer, and that the degraded rule never reintroduces overflow. Contract documented in the integration guide §12 (root anchor bullet).
This commit is contained in:
@@ -48,7 +48,18 @@
|
||||
hidden box stays a PROGRAMMATICALLY scrollable container, and a
|
||||
scrollIntoView fired from panel content (the file tree's "Show in
|
||||
folder" reveal) scrolled the host itself — shifting the whole panel,
|
||||
tab bar included, out of the viewport with no way to scroll back. */
|
||||
tab bar included, out of the viewport with no way to scroll back.
|
||||
The same class covers any scroll-into-view fixup — focus moving into
|
||||
an off-viewport region, a nested iframe/workbench claiming focus
|
||||
while it loads — so the guard belongs on the layer itself, not per
|
||||
call site. The `hidden` declaration BEFORE `clip` is an old-engine
|
||||
fallback, not dead style: engines without `clip` support (Safari < 16)
|
||||
drop the `clip` line, which would leave this box `overflow: visible`
|
||||
— no clipping at all, and the page-draggable regression above
|
||||
returns. With `hidden` first those engines keep the clipping (plus
|
||||
its pre-clip scrollability) while every clip-aware engine applies
|
||||
the later `clip`. */
|
||||
overflow: hidden;
|
||||
overflow: clip;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user