refactor: better usage of menu::Item
This commit is contained in:
parent
ffa67981a8
commit
1fe79b727b
2 changed files with 64 additions and 97 deletions
|
|
@ -275,111 +275,75 @@ impl cosmic::Application for App {
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Tree::with_children(Element::from(button::text("hi 4")), {
|
Tree::with_children(
|
||||||
let mut root_items = vec![menu::Tree::with_children(
|
Element::from(button::text("hi 4")),
|
||||||
menu::root("hi 41 extra root"),
|
|
||||||
menu::items(
|
menu::items(
|
||||||
&self.keybinds,
|
&self.keybinds,
|
||||||
|
vec![
|
||||||
|
menu::Item::Folder(
|
||||||
|
"hi 41 extra root",
|
||||||
vec![menu::Item::Button("hi 3", None, Action::Hi)],
|
vec![menu::Item::Button("hi 3", None, Action::Hi)],
|
||||||
),
|
),
|
||||||
)];
|
|
||||||
let mut items = menu::items(
|
|
||||||
&self.keybinds,
|
|
||||||
vec![
|
|
||||||
menu::Item::Button("hi 42", None, Action::Hi),
|
menu::Item::Button("hi 42", None, Action::Hi),
|
||||||
menu::Item::Button("hi 43", None, Action::Hi),
|
menu::Item::Button("hi 43", None, Action::Hi),
|
||||||
menu::Item::Button("hi 44", None, Action::Hi),
|
menu::Item::Button("hi 44", None, Action::Hi),
|
||||||
menu::Item::Button("hi 45", None, Action::Hi),
|
menu::Item::Button("hi 45", None, Action::Hi),
|
||||||
menu::Item::Button("hi 46", None, Action::Hi),
|
menu::Item::Button("hi 46", None, Action::Hi),
|
||||||
],
|
],
|
||||||
);
|
),
|
||||||
root_items.append(&mut items);
|
),
|
||||||
root_items
|
|
||||||
}),
|
|
||||||
])
|
])
|
||||||
.into()]
|
.into()]
|
||||||
}
|
}
|
||||||
#[cfg(feature = "wayland")]
|
#[cfg(feature = "wayland")]
|
||||||
{
|
{
|
||||||
vec![self.core.responsive_menu_bar(
|
vec![self.core.responsive_menu_bar(
|
||||||
|
&self.keybinds,
|
||||||
MENU_ID.clone(),
|
MENU_ID.clone(),
|
||||||
vec![
|
vec![
|
||||||
(
|
(
|
||||||
menu::root("hiiiiiiiiiiiiiiiiiii 1"),
|
"hiiiiiiiiiiiiiiiiiii 1".into(),
|
||||||
menu::items(
|
vec![menu::Item::Button("hi 1".into(), None, Action::Hi)],
|
||||||
&self.keybinds,
|
|
||||||
vec![menu::Item::Button("hi", None, Action::Hi)],
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
menu::root("hiiiiiiiiiiiiiiiiiiiii 2"),
|
"hiiiiiiiiiiiiiiiiiii 2".into(),
|
||||||
menu::items(
|
|
||||||
&self.keybinds,
|
|
||||||
vec![
|
vec![
|
||||||
menu::Item::Button("hi 21", None, Action::Hi),
|
menu::Item::Button("hi 2".into(), None, Action::Hi),
|
||||||
menu::Item::Button("hi 22", None, Action::Hi),
|
menu::Item::Button("hi 22".into(), None, Action::Hi),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
|
||||||
(
|
(
|
||||||
menu::root("hi 3"),
|
"hiiiiiiiiiiiiiiiiiii 3".into(),
|
||||||
menu::items(
|
|
||||||
&self.keybinds,
|
|
||||||
vec![menu::Item::Button("hi 33", 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,
|
|
||||||
vec![
|
vec![
|
||||||
menu::Item::Button("hi 42", None, Action::Hi),
|
menu::Item::Button("hi 3".into(), None, Action::Hi),
|
||||||
menu::Item::Button("hi 43", None, Action::Hi),
|
menu::Item::Button("hi 33".into(), None, Action::Hi),
|
||||||
menu::Item::Button("hi 44", None, Action::Hi),
|
menu::Item::Button("hi 333".into(), 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
|
"hiiiiiiiiiiiiiiiiiii 4".into(),
|
||||||
},
|
|
||||||
)],
|
|
||||||
)];
|
|
||||||
let mut items = menu::items(
|
|
||||||
&self.keybinds,
|
|
||||||
vec![
|
vec![
|
||||||
menu::Item::Button("hi 42", None, Action::Hi),
|
menu::Item::Button("hi 4".into(), None, Action::Hi),
|
||||||
menu::Item::Button("hi 43", None, Action::Hi),
|
menu::Item::Button("hi 44".into(), None, Action::Hi),
|
||||||
menu::Item::Button("hi 44", None, Action::Hi),
|
menu::Item::Button("hi 444".into(), None, Action::Hi),
|
||||||
menu::Item::Button("hi 45", None, Action::Hi),
|
menu::Item::Folder(
|
||||||
menu::Item::Button("hi 46", None, Action::Hi),
|
"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 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
|
),
|
||||||
}),
|
],
|
||||||
|
),
|
||||||
],
|
],
|
||||||
)]
|
)]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -398,14 +398,18 @@ impl Core {
|
||||||
+ From<crate::surface_message::SurfaceMessage>
|
+ From<crate::surface_message::SurfaceMessage>
|
||||||
+ crate::surface_message::SurfaceMessageHandler
|
+ crate::surface_message::SurfaceMessageHandler
|
||||||
+ 'static,
|
+ 'static,
|
||||||
|
A: menu::Action<Message = Message>,
|
||||||
>(
|
>(
|
||||||
&self,
|
&self,
|
||||||
|
key_binds: &HashMap<menu::KeyBind, A>,
|
||||||
id: crate::widget::Id,
|
id: crate::widget::Id,
|
||||||
trees: Vec<(
|
trees: Vec<(
|
||||||
crate::widget::Button<'a, Message>,
|
std::borrow::Cow<'static, str>,
|
||||||
Vec<impl Into<Tree<'a, Message>>>,
|
Vec<menu::Item<A, std::borrow::Cow<'static, str>>>,
|
||||||
)>,
|
)>,
|
||||||
) -> crate::Element<'a, Message> {
|
) -> crate::Element<'a, Message> {
|
||||||
|
use std::borrow::Cow;
|
||||||
|
|
||||||
use iced::Length;
|
use iced::Length;
|
||||||
|
|
||||||
use crate::widget::id_container;
|
use crate::widget::id_container;
|
||||||
|
|
@ -421,7 +425,12 @@ impl Core {
|
||||||
menu::bar(
|
menu::bar(
|
||||||
trees
|
trees
|
||||||
.into_iter()
|
.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(),
|
.collect(),
|
||||||
),
|
),
|
||||||
crate::widget::Id::new(format!("menu_bar_expanded_{id}")),
|
crate::widget::Id::new(format!("menu_bar_expanded_{id}")),
|
||||||
|
|
@ -438,19 +447,13 @@ impl Core {
|
||||||
.padding([4, 12])
|
.padding([4, 12])
|
||||||
.class(crate::theme::Button::MenuRoot),
|
.class(crate::theme::Button::MenuRoot),
|
||||||
),
|
),
|
||||||
|
menu::items(
|
||||||
|
&key_binds,
|
||||||
trees
|
trees
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|mt| {
|
.map(|mt| menu::Item::Folder(mt.0, mt.1))
|
||||||
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(),
|
.collect(),
|
||||||
|
),
|
||||||
)]),
|
)]),
|
||||||
crate::widget::Id::new(format!("menu_bar_collapsed_{id}")),
|
crate::widget::Id::new(format!("menu_bar_collapsed_{id}")),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue