feat: Tooltips and Better Surface Management
This commit is contained in:
parent
c7edd37b03
commit
337b80d4ca
90 changed files with 3651 additions and 977 deletions
|
|
@ -40,7 +40,7 @@ impl KeyBind {
|
|||
pub fn matches(&self, modifiers: Modifiers, key: &Key) -> bool {
|
||||
let key_eq = match (key, &self.key) {
|
||||
// CapsLock and Shift change the case of Key::Character, so we compare these in a case insensitive way
|
||||
(Key::Character(a), Key::Character(b)) => a.eq_ignore_ascii_case(&b),
|
||||
(Key::Character(a), Key::Character(b)) => a.eq_ignore_ascii_case(b),
|
||||
(a, b) => a.eq(b),
|
||||
};
|
||||
key_eq
|
||||
|
|
|
|||
|
|
@ -64,8 +64,8 @@ impl Default for MenuBarState {
|
|||
}
|
||||
}
|
||||
|
||||
pub(crate) fn menu_roots_children<'a, Message, Renderer>(
|
||||
menu_roots: &Vec<MenuTree<'a, Message, Renderer>>,
|
||||
pub(crate) fn menu_roots_children<Message, Renderer>(
|
||||
menu_roots: &Vec<MenuTree<'_, Message, Renderer>>,
|
||||
) -> Vec<Tree>
|
||||
where
|
||||
Renderer: renderer::Renderer,
|
||||
|
|
@ -95,8 +95,8 @@ where
|
|||
}
|
||||
|
||||
#[allow(invalid_reference_casting)]
|
||||
pub(crate) fn menu_roots_diff<'a, Message, Renderer>(
|
||||
menu_roots: &mut Vec<MenuTree<'a, Message, Renderer>>,
|
||||
pub(crate) fn menu_roots_diff<Message, Renderer>(
|
||||
menu_roots: &mut Vec<MenuTree<'_, Message, Renderer>>,
|
||||
tree: &mut Tree,
|
||||
) where
|
||||
Renderer: renderer::Renderer,
|
||||
|
|
@ -280,8 +280,7 @@ where
|
|||
self
|
||||
}
|
||||
}
|
||||
impl<'a, Message, Renderer> Widget<Message, crate::Theme, Renderer>
|
||||
for MenuBar<'a, Message, Renderer>
|
||||
impl<Message, Renderer> Widget<Message, crate::Theme, Renderer> for MenuBar<'_, Message, Renderer>
|
||||
where
|
||||
Renderer: renderer::Renderer,
|
||||
{
|
||||
|
|
@ -366,6 +365,8 @@ where
|
|||
if state.menu_states.is_empty() && view_cursor.is_over(layout.bounds()) {
|
||||
state.view_cursor = view_cursor;
|
||||
state.open = true;
|
||||
// #[cfg(feature = "wayland")]
|
||||
// TODO emit Message to open menu
|
||||
}
|
||||
}
|
||||
_ => (),
|
||||
|
|
@ -437,6 +438,9 @@ where
|
|||
_renderer: &Renderer,
|
||||
translation: Vector,
|
||||
) -> Option<overlay::Element<'b, Message, crate::Theme, Renderer>> {
|
||||
// #[cfg(feature = "wayland")]
|
||||
// return None;
|
||||
|
||||
let state = tree.state.downcast_ref::<MenuBarState>();
|
||||
if !state.open {
|
||||
return None;
|
||||
|
|
|
|||
|
|
@ -447,7 +447,7 @@ where
|
|||
pub(crate) style: &'b <crate::Theme as StyleSheet>::Style,
|
||||
pub(crate) position: Point,
|
||||
}
|
||||
impl<'a, 'b, Message, Renderer> Menu<'a, 'b, Message, Renderer>
|
||||
impl<'b, Message, Renderer> Menu<'_, 'b, Message, Renderer>
|
||||
where
|
||||
Renderer: renderer::Renderer,
|
||||
{
|
||||
|
|
@ -455,8 +455,8 @@ where
|
|||
overlay::Element::new(Box::new(self))
|
||||
}
|
||||
}
|
||||
impl<'a, 'b, Message, Renderer> overlay::Overlay<Message, crate::Theme, Renderer>
|
||||
for Menu<'a, 'b, Message, Renderer>
|
||||
impl<Message, Renderer> overlay::Overlay<Message, crate::Theme, Renderer>
|
||||
for Menu<'_, '_, Message, Renderer>
|
||||
where
|
||||
Renderer: renderer::Renderer,
|
||||
{
|
||||
|
|
|
|||
|
|
@ -9,9 +9,9 @@ use std::rc::Rc;
|
|||
use iced_widget::core::{renderer, Element};
|
||||
|
||||
use crate::iced_core::{Alignment, Length};
|
||||
use crate::widget::icon;
|
||||
use crate::widget::menu::action::MenuAction;
|
||||
use crate::widget::menu::key_bind::KeyBind;
|
||||
use crate::widget::{icon, Button};
|
||||
use crate::{theme, widget};
|
||||
|
||||
/// Nested menu is essentially a tree of items, a menu is a collection of items
|
||||
|
|
@ -192,14 +192,13 @@ pub enum MenuItem<A: MenuAction, L: Into<Cow<'static, str>>> {
|
|||
/// - A button for the root menu item.
|
||||
pub fn menu_root<'a, Message, Renderer: renderer::Renderer>(
|
||||
label: impl Into<Cow<'a, str>> + 'a,
|
||||
) -> iced::Element<'a, Message, crate::Theme, Renderer>
|
||||
) -> Button<'a, Message>
|
||||
where
|
||||
Element<'a, Message, crate::Theme, Renderer>: From<widget::Button<'a, Message>>,
|
||||
{
|
||||
widget::button::custom(widget::text(label))
|
||||
.padding([4, 12])
|
||||
.class(theme::Button::MenuRoot)
|
||||
.into()
|
||||
}
|
||||
|
||||
/// Create a list of menu items from a vector of `MenuItem`.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue