fix(client): keep the plugin manager's whole top strip draggable

The page carried a 28px top inset above its head row, so the window's topmost 28px on that page belonged to no drag region — the frame's former band covered it, and the per-row mark did not. The inset moves into the head rows themselves (.pageHead and .detailTop), which now start at the window's top edge while the content keeps its position. The browser lane pins each row's top edge at zero and the negative control confirms both assertions fail on the pre-fix sheet.
This commit is contained in:
mektpoy committed 2026-09-23 21:10:27 +08:00
1 parent 63797c0208
commit 4a409edf8b
2 files changed
+18 -4

No files matched your search

+6 -1
View File
@@ -368,6 +368,9 @@ describe('web e2e: macOS window drag coverage', () => {
})
const regions = await collectedRegions(page, INTERACTIVE_SELECTOR)
// The row starts at the window's top edge: a page inset above it would be a strip
// no drag region covers, which is the dead band at the very top of this page.
expect(rect.y, 'the page head starts at the window’s top edge').toBeLessThanOrEqual(0.5)
// The page head owns its run, clearance included: that is the entry page's
// window strip, with no frame band behind it.
expect(
@@ -419,7 +422,9 @@ describe('web e2e: macOS window drag coverage', () => {
const regions = await collectedRegions(page, INTERACTIVE_SELECTOR)
// The head's top inset is the window clearance above the crumb: blank, so
// it drags like the entry page's head.
// it drags like the entry page's head. The row also starts at the window's top
// edge, or the strip above it belongs to no drag region.
expect(headRect.y, 'the detail head row starts at the window’s top edge').toBeLessThanOrEqual(0.5)
expect(
isDraggableAt(regions, headRect.x + headRect.width / 2, headRect.y + 4),
'the detail head row’s top inset',
@@ -8,7 +8,10 @@
box-sizing: border-box;
height: 100%;
overflow: auto;
padding: 28px clamp(24px, 4vw, 48px) 48px;
/* Inline and bottom insets only: the 28px top inset belongs to the head row
(`.pageHead`, `.detailTop`). macOS window dragging is owned by a row's own box,
so an inset above that box leaves a top strip no drag region covers. */
padding: 0 clamp(24px, 4vw, 48px) 48px;
color: var(--dsw-alias-label-primary);
}
@@ -23,6 +26,9 @@
justify-content: space-between;
gap: 16px;
box-sizing: border-box;
/* The page's former top inset: the row starts at the window's top edge, so the whole
strip above the page content drags the window. */
padding-top: 28px;
}
/* macOS hiddenInset titlebar: the frame's top clearance keeps the head below
@@ -30,7 +36,7 @@
owns the window drag over its own box — clearance included — so this page's
top strip drags without a frame band. */
:global([data-platform='darwin']) .pageHead {
padding-top: var(--dsh-frame-top-clearance, 0px);
padding-top: calc(28px + var(--dsh-frame-top-clearance, 0px));
}
.pageTitle {
@@ -1058,10 +1064,13 @@ label.registryOption {
.detailTop {
display: flex;
flex-direction: column;
/* The same 28px top inset `.pageHead` carries, so the row starts at the window's
top edge and the strip above the detail content drags the window. */
padding-top: 28px;
}
:global([data-platform='darwin']) .detailTop {
padding-top: var(--dsh-frame-top-clearance, 0px);
padding-top: calc(28px + var(--dsh-frame-top-clearance, 0px));
}
.crumb {