fix(editor): uniform card bg + jian-standard button_hover row washes

A consistency audit found per-item/per-token hover regressions from the
jian migration: provider cards gave ClaudeCode a permanent muted fill
while others were transparent (now all transparent + one button_hover
wash); layer-panel page/layer rows, the flex padding-mode popover rows,
and the builtin-preset rows washed with theme.muted instead of the
jian-standard theme.button_hover. Hover now reads identically across the
chrome.
This commit is contained in:
Kayshen-X 2026-06-20 19:13:52 +08:00
parent 153e3f72a8
commit 26c39966e7
4 changed files with 14 additions and 15 deletions

View file

@ -153,8 +153,10 @@ pub fn paint_preset_menu(
let item = preset_item_rect(card, i);
let active = agent.preset == preset.key;
let hovered = settings.builtin_preset_menu_hover == Some(preset.key);
if active || hovered {
if active {
cx.backend.fill_round_rect(item, 5.0, theme.muted);
} else if hovered {
cx.backend.fill_round_rect(item, 5.0, theme.button_hover);
}
if active {
draw_icon(

View file

@ -29,16 +29,12 @@ pub(super) fn paint_agent_card(
card: Rect,
index: usize,
) {
let outlined = matches!(provider, AgentProvider::ClaudeCode);
let card_hovered = settings.hover_provider == index;
// Chrome via jian Card; the fill choice stays caller-side so the look is
// preserved exactly: outlined ClaudeCode -> muted, hover -> accent wash,
// else transparent. The whole-card hover wash keeps the row reading as
// "pointing at this card" rather than only the trailing button.
let fill = if outlined {
Some(theme.muted)
} else if card_hovered {
Some(theme.accent)
// Every provider card looks the same: transparent by default + a single
// jian-standard `button_hover` wash on hover (no per-provider special fill),
// so hovering any card reads identically.
let fill = if card_hovered {
Some(theme.button_hover)
} else {
None
};

View file

@ -513,7 +513,8 @@ impl Widget for LayerPanel {
cx.backend
.fill_round_rect(row, 6.0, self.theme.row_selected);
} else if page.hovered {
cx.backend.fill_round_rect(row, 6.0, self.theme.muted);
cx.backend
.fill_round_rect(row, 6.0, self.theme.button_hover);
}
let label_x = row.origin.x + 12.0;
let label_max_x = rect.origin.x + rect.size.x - ROW_PAD_X - 18.0;
@ -602,7 +603,8 @@ impl Widget for LayerPanel {
cx.backend
.fill_round_rect(row, 6.0, self.theme.row_selected_primary);
} else if item.hovered {
cx.backend.fill_round_rect(row, 6.0, self.theme.muted);
cx.backend
.fill_round_rect(row, 6.0, self.theme.button_hover);
}
let indent = ROW_PAD_X + item.depth as f32 * 12.0;

View file

@ -570,9 +570,8 @@ pub fn paint_padding_mode_popover(
for (i, rect) in rows.iter().enumerate() {
let mode = PaddingEditMode::ALL[i];
if hover == Some(i) {
// Muted row wash matching the other dropdown hovers
// (file menu / locale / shape picker).
cx.backend.fill_round_rect(*rect, 6.0, theme.muted);
// jian-standard button_hover row wash, matching the other dropdowns.
cx.backend.fill_round_rect(*rect, 6.0, theme.button_hover);
}
paint_radio_circle(
cx,