Skip to content

Commit

Permalink
refactor: better usage of menu::Item
Browse files Browse the repository at this point in the history
  • Loading branch information
wash2 committed Feb 18, 2025
1 parent e580b96 commit cd25d9c
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 97 deletions.
126 changes: 45 additions & 81 deletions examples/application/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -275,111 +275,75 @@ impl cosmic::Application for App {
],
),
),
Tree::with_children(Element::from(button::text("hi 4")), {
let mut root_items = vec![menu::Tree::with_children(
menu::root("hi 41 extra root"),
menu::items(
&self.keybinds,
vec![menu::Item::Button("hi 3", None, Action::Hi)],
),
)];
let mut items = menu::items(
Tree::with_children(
Element::from(button::text("hi 4")),
menu::items(
&self.keybinds,
vec![
menu::Item::Folder(
"hi 41 extra root",
vec![menu::Item::Button("hi 3", None, Action::Hi)],
),
menu::Item::Button("hi 42", None, Action::Hi),
menu::Item::Button("hi 43", None, Action::Hi),
menu::Item::Button("hi 44", None, Action::Hi),
menu::Item::Button("hi 45", None, Action::Hi),
menu::Item::Button("hi 46", None, Action::Hi),
],
);
root_items.append(&mut items);
root_items
}),
),
),
])
.into()]
}
#[cfg(feature = "wayland")]
{
vec![self.core.responsive_menu_bar(
&self.keybinds,
MENU_ID.clone(),
vec![
(
menu::root("hiiiiiiiiiiiiiiiiiii 1"),
menu::items(
&self.keybinds,
vec![menu::Item::Button("hi", None, Action::Hi)],
),
"hiiiiiiiiiiiiiiiiiii 1".into(),
vec![menu::Item::Button("hi 1".into(), None, Action::Hi)],
),
(
menu::root("hiiiiiiiiiiiiiiiiiiiii 2"),
menu::items(
&self.keybinds,
vec![
menu::Item::Button("hi 21", None, Action::Hi),
menu::Item::Button("hi 22", None, Action::Hi),
],
),
"hiiiiiiiiiiiiiiiiiii 2".into(),
vec![
menu::Item::Button("hi 2".into(), None, Action::Hi),
menu::Item::Button("hi 22".into(), None, Action::Hi),
],
),
(
menu::root("hi 3"),
menu::items(
&self.keybinds,
vec![menu::Item::Button("hi 33", None, Action::Hi)],
),
"hiiiiiiiiiiiiiiiiiii 3".into(),
vec![
menu::Item::Button("hi 3".into(), None, Action::Hi),
menu::Item::Button("hi 33".into(), None, Action::Hi),
menu::Item::Button("hi 333".into(), None, Action::Hi),
],
),
(menu::root("hi 4"), {
let mut root_items = vec![menu::Tree::with_children(
menu_button(vec![text("hi 41 extra root").into()])
.on_press(Message::Hi),
vec![menu::Tree::with_children(
menu_button(vec![text("hi 41 extra 2").into()])
.on_press(Message::Hi),
{
let mut root_items = vec![menu::Tree::with_children(
menu_button(vec![text("hi 41 extra root").into()])
.on_press(Message::Hi),
vec![menu::Tree::with_children(
menu_button(vec![text("hi 41 extra 2").into()])
.on_press(Message::Hi),
menu::items(
&self.keybinds,
vec![menu::Item::Button(
"hi 41 extra root item",
None,
Action::Hi,
)],
),
)],
)];
let mut items = menu::items(
&self.keybinds,
(
"hiiiiiiiiiiiiiiiiiii 4".into(),
vec![
menu::Item::Button("hi 4".into(), None, Action::Hi),
menu::Item::Button("hi 44".into(), None, Action::Hi),
menu::Item::Button("hi 444".into(), None, Action::Hi),
menu::Item::Folder(
"nest 4".into(),
vec![
menu::Item::Button("hi 4".into(), None, Action::Hi),
menu::Item::Button("hi 44".into(), None, Action::Hi),
menu::Item::Button("hi 444".into(), None, Action::Hi),
menu::Item::Folder(
"nest 2 4".into(),
vec![
menu::Item::Button("hi 42", None, Action::Hi),
menu::Item::Button("hi 43", None, Action::Hi),
menu::Item::Button("hi 44", None, Action::Hi),
menu::Item::Button("hi 45", None, Action::Hi),
menu::Item::Button("hi 46", None, Action::Hi),
menu::Item::Button("hi 4".into(), None, Action::Hi),
menu::Item::Button("hi 44".into(), None, Action::Hi),
menu::Item::Button("hi 444".into(), None, Action::Hi),
],
);
root_items.append(&mut items);
root_items
},
)],
)];
let mut items = menu::items(
&self.keybinds,
vec![
menu::Item::Button("hi 42", None, Action::Hi),
menu::Item::Button("hi 43", None, Action::Hi),
menu::Item::Button("hi 44", None, Action::Hi),
menu::Item::Button("hi 45", None, Action::Hi),
menu::Item::Button("hi 46", None, Action::Hi),
],
);
root_items.append(&mut items);
root_items
}),
),
],
),
],
),
],
)]
}
Expand Down
35 changes: 19 additions & 16 deletions src/app/core.rs
Original file line number Diff line number Diff line change
Expand Up @@ -398,14 +398,18 @@ impl Core {
+ From<crate::surface_message::SurfaceMessage>
+ crate::surface_message::SurfaceMessageHandler
+ 'static,
A: menu::Action<Message = Message>,
>(
&self,
key_binds: &HashMap<menu::KeyBind, A>,
id: crate::widget::Id,
trees: Vec<(
crate::widget::Button<'a, Message>,
Vec<impl Into<Tree<'a, Message>>>,
std::borrow::Cow<'static, str>,
Vec<menu::Item<A, std::borrow::Cow<'static, str>>>,
)>,
) -> crate::Element<'a, Message> {
use std::borrow::Cow;

use iced::Length;

use crate::widget::id_container;
Expand All @@ -421,7 +425,12 @@ impl Core {
menu::bar(
trees
.into_iter()
.map(|mt| menu::Tree::<_>::with_children(mt.0, mt.1))
.map(|mt| {
menu::Tree::<_>::with_children(
menu::root(mt.0),
menu::items(&key_binds, mt.1),
)
})
.collect(),
),
crate::widget::Id::new(format!("menu_bar_expanded_{id}")),
Expand All @@ -438,19 +447,13 @@ impl Core {
.padding([4, 12])
.class(crate::theme::Button::MenuRoot),
),
trees
.into_iter()
.map(|mt| {
menu::Tree::<_>::with_children(
mt.0.width(Length::Fill)
.height(Length::Fixed(36.0))
.padding([4, 16])
.class(crate::theme::Button::MenuItem)
.force_enabled(true),
mt.1,
)
})
.collect(),
menu::items(
&key_binds,
trees
.into_iter()
.map(|mt| menu::Item::Folder(mt.0, mt.1))
.collect(),
),
)]),
crate::widget::Id::new(format!("menu_bar_collapsed_{id}")),
),
Expand Down

0 comments on commit cd25d9c

Please sign in to comment.