fix(menu_bar): root text will inherit icon color from header
This commit is contained in:
parent
aa3f5d3401
commit
f9f8eb51cb
8 changed files with 26 additions and 24 deletions
|
|
@ -14,9 +14,7 @@ use cosmic::iced_core::{Length, Size};
|
||||||
use cosmic::widget::menu::action::MenuAction;
|
use cosmic::widget::menu::action::MenuAction;
|
||||||
use cosmic::widget::menu::key_bind::KeyBind;
|
use cosmic::widget::menu::key_bind::KeyBind;
|
||||||
use cosmic::widget::menu::key_bind::Modifier;
|
use cosmic::widget::menu::key_bind::Modifier;
|
||||||
use cosmic::widget::menu::menu_tree::{menu_items, menu_root, MenuItem};
|
use cosmic::widget::menu::{self, ItemHeight, ItemWidth};
|
||||||
use cosmic::widget::menu::{ItemHeight, ItemWidth, MenuBar, MenuTree};
|
|
||||||
use cosmic::widget::segmented_button::Entity;
|
|
||||||
use cosmic::{executor, Element};
|
use cosmic::{executor, Element};
|
||||||
|
|
||||||
/// Runs application with these settings
|
/// Runs application with these settings
|
||||||
|
|
@ -67,7 +65,7 @@ pub enum Action {
|
||||||
|
|
||||||
impl MenuAction for Action {
|
impl MenuAction for Action {
|
||||||
type Message = Message;
|
type Message = Message;
|
||||||
fn message(&self, _entity_opt: Option<Entity>) -> Self::Message {
|
fn message(&self) -> Self::Message {
|
||||||
match self {
|
match self {
|
||||||
Action::WindowClose => Message::WindowClose,
|
Action::WindowClose => Message::WindowClose,
|
||||||
Action::ToggleHideContent => Message::ToggleHideContent,
|
Action::ToggleHideContent => Message::ToggleHideContent,
|
||||||
|
|
@ -156,23 +154,23 @@ impl cosmic::Application for App {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn menu_bar<'a>(config: &Config, key_binds: &HashMap<KeyBind, Action>) -> Element<'a, Message> {
|
pub fn menu_bar<'a>(config: &Config, key_binds: &HashMap<KeyBind, Action>) -> Element<'a, Message> {
|
||||||
MenuBar::new(vec![MenuTree::with_children(
|
menu::bar(vec![menu::Tree::with_children(
|
||||||
menu_root("File"),
|
menu::root("File"),
|
||||||
menu_items(
|
menu::items(
|
||||||
key_binds,
|
key_binds,
|
||||||
vec![
|
vec![
|
||||||
MenuItem::Button("New window", Action::WindowNew),
|
menu::Item::Button("New window", Action::WindowNew),
|
||||||
MenuItem::Divider,
|
menu::Item::Divider,
|
||||||
MenuItem::Folder(
|
menu::Item::Folder(
|
||||||
"View",
|
"View",
|
||||||
vec![MenuItem::CheckBox(
|
vec![menu::Item::CheckBox(
|
||||||
"Hide content",
|
"Hide content",
|
||||||
config.hide_content,
|
config.hide_content,
|
||||||
Action::ToggleHideContent,
|
Action::ToggleHideContent,
|
||||||
)],
|
)],
|
||||||
),
|
),
|
||||||
MenuItem::Divider,
|
menu::Item::Divider,
|
||||||
MenuItem::Button("Quit", Action::WindowClose),
|
menu::Item::Button("Quit", Action::WindowClose),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
)])
|
)])
|
||||||
|
|
|
||||||
|
|
@ -168,7 +168,7 @@ impl cosmic::Application for App {
|
||||||
Err(why) => Message::OpenError(Arc::new(why)),
|
Err(why) => Message::OpenError(Arc::new(why)),
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.map(cosmic::app::Message::App);
|
.map(Into::into);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Displays an error in the application's warning bar.
|
// Displays an error in the application's warning bar.
|
||||||
|
|
|
||||||
|
|
@ -120,8 +120,8 @@ pub fn appearance(
|
||||||
}
|
}
|
||||||
Button::MenuRoot => {
|
Button::MenuRoot => {
|
||||||
appearance.background = None;
|
appearance.background = None;
|
||||||
appearance.icon_color = Some(cosmic.accent.base.into());
|
appearance.icon_color = None;
|
||||||
appearance.text_color = Some(cosmic.accent.base.into());
|
appearance.text_color = None;
|
||||||
}
|
}
|
||||||
Button::MenuItem => {
|
Button::MenuItem => {
|
||||||
let (background, _, _) = color(&cosmic.background.component);
|
let (background, _, _) = color(&cosmic.background.component);
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ pub struct Appearance {
|
||||||
pub border_color: Color,
|
pub border_color: Color,
|
||||||
/// The expand value of the menus' background
|
/// The expand value of the menus' background
|
||||||
pub background_expand: [u16; 4],
|
pub background_expand: [u16; 4],
|
||||||
/// The highlighted path [`Color`] of the the menu bar and its menus.
|
// /// The highlighted path [`Color`] of the the menu bar and its menus.
|
||||||
pub path: Color,
|
pub path: Color,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -375,7 +375,13 @@ impl<'a, Message: 'a + Clone> Widget<Message, crate::Theme, crate::Renderer>
|
||||||
};
|
};
|
||||||
|
|
||||||
let mut icon_color = styling.icon_color.unwrap_or(renderer_style.icon_color);
|
let mut icon_color = styling.icon_color.unwrap_or(renderer_style.icon_color);
|
||||||
let mut text_color = styling.text_color.unwrap_or(renderer_style.text_color);
|
|
||||||
|
// Menu roots should share the accent color that icons get in the header.
|
||||||
|
let mut text_color = if matches!(self.style, crate::theme::Button::MenuRoot) {
|
||||||
|
icon_color
|
||||||
|
} else {
|
||||||
|
styling.text_color.unwrap_or(renderer_style.text_color)
|
||||||
|
};
|
||||||
|
|
||||||
if let Some(alpha) = headerbar_alpha {
|
if let Some(alpha) = headerbar_alpha {
|
||||||
icon_color.a = alpha;
|
icon_color.a = alpha;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
use crate::widget::segmented_button::Entity;
|
|
||||||
|
|
||||||
/// `MenuAction` is a trait that represents an action in a menu.
|
/// `MenuAction` is a trait that represents an action in a menu.
|
||||||
///
|
///
|
||||||
/// It is used to define the behavior of menu items when they are activated.
|
/// It is used to define the behavior of menu items when they are activated.
|
||||||
|
|
|
||||||
|
|
@ -390,8 +390,8 @@ where
|
||||||
},
|
},
|
||||||
shadow: Default::default(),
|
shadow: Default::default(),
|
||||||
};
|
};
|
||||||
let path_color = styling.path;
|
|
||||||
renderer.fill_quad(path_quad, path_color);
|
renderer.fill_quad(path_quad, styling.path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -709,8 +709,8 @@ where
|
||||||
},
|
},
|
||||||
shadow: Shadow::default(),
|
shadow: Shadow::default(),
|
||||||
};
|
};
|
||||||
let path_color = styling.path;
|
|
||||||
r.fill_quad(path_quad, path_color);
|
r.fill_quad(path_quad, styling.path);
|
||||||
}
|
}
|
||||||
|
|
||||||
// draw item
|
// draw item
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue