diff --git a/docs/screenshots/ribbon-highlight/after-dimbreak.png b/docs/screenshots/ribbon-highlight/after-dimbreak.png index b8dff2f51..a6538aa96 100644 Binary files a/docs/screenshots/ribbon-highlight/after-dimbreak.png and b/docs/screenshots/ribbon-highlight/after-dimbreak.png differ diff --git a/src/ui/ribbon/mod.rs b/src/ui/ribbon/mod.rs index 1546cb166..fdbb9e95c 100644 --- a/src/ui/ribbon/mod.rs +++ b/src/ui/ribbon/mod.rs @@ -521,8 +521,9 @@ impl Ribbon { // The quick-access flow and the tabs flow each flex-wrap; WrapBar stacks // them so a wrapped tab never shares a row with a quick-access button. - // A running command whose button is on another tab lights that tab's - // header in the button's own blue, pointing at where the button lives. + // A running command whose button is on another tab tints that tab's + // header with a faint wash of the button's blue, pointing at where the + // button lives without competing with the selected tab's outline. let holding_tab = self.tab_holding_active_tool(); let tab_items = self.modules.iter().enumerate().fold( Vec::>::new(), @@ -562,9 +563,15 @@ impl Ribbon { background: (is_active || holds_tool || matches!(status, button::Status::Hovered)) - .then_some(Background::Color(pair.color)), - text_color: if is_active || holds_tool { + .then_some(Background::Color(if holds_tool && !is_active { + pair.color.scale_alpha(0.35) + } else { + pair.color + })), + text_color: if is_active { pair.text + } else if holds_tool { + palette.background.base.text } else if is_contextual { accent.color } else {