fix(desktop): stop panel host from blocking macOS window drag
The shell's base stylesheet makes every direct body child no-drag (`html[data-platform=darwin] body > :not(#root)`). The viewport-sized `[data-dsh-panel-host]` layer inherited it, and since app-region ignores pointer-events it cancelled every window-drag strip beneath it once the shell recomputed regions. Take the host and layer out of the app-region computation (`!important`, the shell selector carries an id's specificity) and keep the panels themselves no-drag so their controls still receive clicks. Fixes #772 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
d641d2e211
commit
fac59ae2f3
@@ -63,6 +63,22 @@
|
||||
overflow: clip;
|
||||
}
|
||||
|
||||
/* Desktop drag regions ignore pointer-events: the shell's base stylesheet
|
||||
makes every direct body child `no-drag`, and this viewport-sized layer
|
||||
inherited it, cancelling every window-drag strip beneath it once the
|
||||
shell recomputed regions (window drags worked once, then stopped).
|
||||
Take the host and layer out of the app-region computation; `!important`
|
||||
because the shell's `body > :not(#root)` selector outranks ours. The
|
||||
panels themselves stay no-drag so their controls keep receiving clicks. */
|
||||
:global(html[data-platform] body > [data-dsh-better-sidebar]),
|
||||
:global([data-dsh-panel-host]) {
|
||||
-webkit-app-region: initial !important;
|
||||
}
|
||||
|
||||
:global([data-dsh-panel-host]) > * {
|
||||
-webkit-app-region: no-drag;
|
||||
}
|
||||
|
||||
:global([data-dsh-panel-host][data-dsh-panel-host-degraded]) {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
|
||||
@@ -615,6 +615,16 @@ test('conservative auto: URL stamps alone never modify the layout; plugin chrome
|
||||
return false
|
||||
})
|
||||
expect(hasNoDragRule, 'the bundle must ship the drag-region opt-out rule').toBe(true)
|
||||
// The viewport-sized panel host must NOT inherit the shell's blanket
|
||||
// `body > :not(#root) { no-drag }` — it would cancel every window-drag
|
||||
// strip beneath it on macOS (issue #772).
|
||||
const hasHostReset = await page.evaluate(() => {
|
||||
for (const tag of document.querySelectorAll('style')) {
|
||||
if (tag.textContent !== null && /\[data-dsh-panel-host\]\{-webkit-app-region:\s*initial\s*!important/.test(tag.textContent)) return true
|
||||
}
|
||||
return false
|
||||
})
|
||||
expect(hasHostReset, 'the panel host must opt out of app-region computation').toBe(true)
|
||||
})
|
||||
|
||||
test('standard WCO geometry drives the strip reactively (issue #257)', async ({ page }) => {
|
||||
|
||||
Reference in New Issue
Block a user