Flatten the selection and the menu highlight; kill the Aero afterglow
Three things looked wrong, three different causes. The selected row carried a border. 7.css outlines tr.highlighted (#aaddfa) on top of its fill, and we had been restating that outline in the new blue — so the band had an edge, and on the cursor row the dotted focus rect made three concentric outlines around a single row. The reserved 1px border stays (it is what stops selection from shifting rows) but is transparent in every state; the fill paints under it, since background-clip is border-box. --w7-sel-bd and --w7-sel-bd-idle are gone with it. The context menu highlighted items with 7.css's translucent gradient wash — the same gradient the ListView selection just dropped. It now uses --w7-sel-bg, so selection reads identically wherever it appears. The hover-off animation was button.css bleeding into menu items, which ARE buttons: button::before is a glow overlay that fades out over a full second, and menu.css suppresses it with content:none on the :hover arm ONLY — so leaving an item brought the pseudo back with opacity animating 1 -> 0, a ghost trailing the pointer. Killing content in every state removes it. Same family, also fixed: button:focus runs pulse-anim infinitely, and this menu moves real focus between items for keyboard nav. menu-probe.ts now checks the highlight too, using hover-probe's :hover -> .simhover rewrite: it measures colour spread down a text-free strip of a force-hovered item, so "is it flat?" is a measurement. Verified the check can fail by injecting the old wash into the built stylesheet — spread 9, exit 2; the flat fill reads spread 0 at exactly #cbe8f6. The harness lost its selection outlines and nothing else, in both themes. Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
+4
-1
@@ -200,7 +200,10 @@
|
||||
</figure>
|
||||
<figure class="cell" style="margin:0">
|
||||
<figcaption>ours — context-menu.ts output (buttons, divider, accelerator, checkables)</figcaption>
|
||||
<ul role="menu" style="width:200px">
|
||||
<!-- w7-ctx is the app's marker class (flat highlight, no Aero afterglow).
|
||||
It also carries a position:fixed restatement, which the app wants and a
|
||||
review page in normal flow does not — hence the inline static. -->
|
||||
<ul role="menu" class="w7-ctx" style="width:200px;position:static">
|
||||
<li role="menuitem"><button type="button">Send to Other Panel</button></li>
|
||||
<li role="menuitem"><button type="button">Open</button></li>
|
||||
<li role="menuitem"><button type="button">Edit <span>F4</span></button></li>
|
||||
|
||||
@@ -137,9 +137,7 @@
|
||||
commander convention this app already follows (see the pane-focus model
|
||||
below): the band never disappears, only its strength changes. */
|
||||
--w7-sel-bg: #cbe8f6;
|
||||
--w7-sel-bd: #26a0da;
|
||||
--w7-sel-bg-idle: #dedede;
|
||||
--w7-sel-bd-idle: #c9c9c9;
|
||||
/* Tabs (tabs.css). 7.css hardcodes `color: #222` on every tablist button,
|
||||
outside its own var system, which is unreadable on the dark surface. */
|
||||
--w7-tab-c: #222;
|
||||
@@ -201,9 +199,7 @@
|
||||
--w7-lv-head-bd: var(--w7-el-bd-d);
|
||||
--w7-lv-cell-bd: var(--w7-el-bd-d);
|
||||
--w7-sel-bg: #2a4a63;
|
||||
--w7-sel-bd: #4a8cbe;
|
||||
--w7-sel-bg-idle: #3a3a3a;
|
||||
--w7-sel-bd-idle: #4c4c4c;
|
||||
--w7-tab-c: var(--w7-el-c);
|
||||
--w7-mn-c: var(--w7-el-c);
|
||||
--w7-mn-bd: var(--w7-el-bd-d);
|
||||
@@ -262,9 +258,7 @@
|
||||
--w7-lv-head-bd: var(--w7-el-bd-d);
|
||||
--w7-lv-cell-bd: var(--w7-el-bd-d);
|
||||
--w7-sel-bg: #2a4a63;
|
||||
--w7-sel-bd: #4a8cbe;
|
||||
--w7-sel-bg-idle: #3a3a3a;
|
||||
--w7-sel-bd-idle: #4c4c4c;
|
||||
--w7-tab-c: var(--w7-el-c);
|
||||
--w7-mn-c: var(--w7-el-c);
|
||||
--w7-mn-bd: var(--w7-el-bd-d);
|
||||
@@ -582,7 +576,7 @@ html.win7 body {
|
||||
}
|
||||
.win7 table > tbody > tr.highlighted {
|
||||
background: var(--w7-sel-bg-idle);
|
||||
border-color: var(--w7-sel-bd-idle);
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
/* ---- Window frame ----
|
||||
@@ -658,15 +652,15 @@ html.win7 body {
|
||||
1px at top and bottom and shoved every row below it down by 2px as the
|
||||
cursor moved. Every row reserves that border instead, transparent when not
|
||||
selected, so selecting changes colour and nothing else.
|
||||
NOTE: this sits in `skinfix`, which outranks `skin` by LAYER regardless of
|
||||
specificity, so it would also blank 7.css's highlight border — both
|
||||
selected states therefore restate their border-color below. */
|
||||
The border stays TRANSPARENT even when selected: it exists purely to
|
||||
reserve space. 7.css outlines the selected row (#aaddfa) on top of its
|
||||
fill, which stacked a second edge inside the band and, with the cursor
|
||||
row's dotted rect, drew three concentric outlines around one row. The fill
|
||||
paints under the transparent border (background-clip defaults to
|
||||
border-box), so the band still covers the full row. */
|
||||
.win7 table > tbody > tr {
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
.win7 table > tbody > tr.highlighted {
|
||||
border-color: var(--w7-sel-bd-idle);
|
||||
}
|
||||
|
||||
/* Pane-focus model (commander convention, matching Win7 Explorer):
|
||||
the CURSOR ROW always carries the selection band in BOTH panels —
|
||||
@@ -679,13 +673,13 @@ html.win7 body {
|
||||
The dotted focus rectangle is NOT the focus signal; it is layered on top
|
||||
of the band in the focused pane only, the way Win7 drew the keyboard
|
||||
focus rect over the selected item.
|
||||
FLAT, not a gradient: 7.css bands the row with --w7-el-grad-h, its Aero
|
||||
FLAT, and only a fill: 7.css bands the row with --w7-el-grad-h, its Aero
|
||||
element-hover ramp, which reads as a glossy button rather than a file
|
||||
selection. Explorer used one solid fill and a solid border. Keep the
|
||||
1px border and 7.css's 3px radius — those ARE Explorer's selection box. */
|
||||
selection, and outlines it as well. One solid colour, no edge — the
|
||||
dotted cursor rect is then the only line on the row, which is what makes
|
||||
it legible as the cursor. */
|
||||
.win7 table.is-active > tbody > tr.highlighted {
|
||||
background: var(--w7-sel-bg);
|
||||
border-color: var(--w7-sel-bd);
|
||||
}
|
||||
|
||||
/* One dotted rectangle around the ROW; per cell (tr > *) draws a dotted box
|
||||
@@ -739,6 +733,40 @@ html.win7 body {
|
||||
color: var(--w7-mn-check-c);
|
||||
}
|
||||
|
||||
/* Menu items: flat highlight, and no Aero afterglow trailing the pointer.
|
||||
Menu items ARE <button>s, so button.css reaches them with three effects
|
||||
that do not belong on a menu:
|
||||
(1) the highlight is 7.css's translucent wash
|
||||
`linear-gradient(#fff9, #e6ecf5cc 90%, #fffc)` + an #aaddfa edge — the
|
||||
same gradient the ListView selection above just dropped;
|
||||
(2) `button::before` is a blue glow overlay whose opacity fades out over
|
||||
a FULL SECOND (`button:not(:hover):before { transition: opacity 1s
|
||||
linear }`). menu.css sets `content: none` on the :HOVER arm only, so
|
||||
the pseudo reappears the instant you leave an item and then fades 1→0
|
||||
— a ghost dragging behind the pointer. Killing `content` in EVERY
|
||||
state is what removes it; suppressing the transition alone would not,
|
||||
because the glow itself is legitimate on real push buttons;
|
||||
(3) `button:focus` runs `pulse-anim` infinitely, and this menu moves REAL
|
||||
focus between items for keyboard nav — so a focused item would breathe.
|
||||
Scoped to the app's own menu (w7-ctx): 7.css's demo menus keep stock Aero. */
|
||||
.win7 ul[role='menu'].w7-ctx > li[role='menuitem'] > button,
|
||||
.win7 ul[role='menu'].w7-ctx > li[role='menuitem'] > label {
|
||||
transition: none;
|
||||
animation: none;
|
||||
}
|
||||
.win7 ul[role='menu'].w7-ctx > li[role='menuitem'] > button::before,
|
||||
.win7 ul[role='menu'].w7-ctx > li[role='menuitem'] > button::after {
|
||||
content: none;
|
||||
}
|
||||
.win7 ul[role='menu'].w7-ctx > li[role='menuitem'] > button:hover,
|
||||
.win7 ul[role='menu'].w7-ctx > li[role='menuitem'] > button:focus,
|
||||
.win7 ul[role='menu'].w7-ctx > li[role='menuitem'] > button:focus-visible,
|
||||
.win7 ul[role='menu'].w7-ctx > li[role='menuitem'] > label:hover,
|
||||
.win7 ul[role='menu'].w7-ctx > li[role='menuitem'] > label:focus-visible {
|
||||
background: var(--w7-sel-bg);
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
/* ---- Flat buttons (toolbars + the w7-flat escape hatch) ----
|
||||
The paint-suppression half of the rule in `skin` (see there for the split).
|
||||
It lives in `skinfix` because 7.css restates border-color at (0,3,1) via
|
||||
|
||||
Reference in New Issue
Block a user