diff options
author | 2022-07-09 02:28:52 +0200 | |
---|---|---|
committer | 2022-07-09 02:28:52 +0200 | |
commit | e053e25d2ccb17f7a162685a106a8bbd915a873f (patch) | |
tree | 5304f3ea2712e8889c7278ec5e57418f484d8f6c /pure/src/widget/tooltip.rs | |
parent | 66eb6263003c1bbedd1fd14d6b12f172d20a6211 (diff) | |
parent | 7105db97a53d90adf429091298f31c90974d8f08 (diff) | |
download | iced-e053e25d2ccb17f7a162685a106a8bbd915a873f.tar.gz iced-e053e25d2ccb17f7a162685a106a8bbd915a873f.tar.bz2 iced-e053e25d2ccb17f7a162685a106a8bbd915a873f.zip |
Merge pull request #1362 from iced-rs/theming
Theming
Diffstat (limited to 'pure/src/widget/tooltip.rs')
-rw-r--r-- | pure/src/widget/tooltip.rs | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/pure/src/widget/tooltip.rs b/pure/src/widget/tooltip.rs index 3887732a..cbc34722 100644 --- a/pure/src/widget/tooltip.rs +++ b/pure/src/widget/tooltip.rs @@ -7,27 +7,33 @@ use iced_native::mouse; use iced_native::overlay; use iced_native::renderer; use iced_native::text; +use iced_native::widget::container; use iced_native::widget::tooltip; -use iced_native::widget::Text; +use iced_native::widget::{self, Text}; use iced_native::{Clipboard, Layout, Length, Point, Rectangle, Shell}; -pub use iced_style::container::{Style, StyleSheet}; +pub use iced_style::container::{Appearance, StyleSheet}; pub use tooltip::Position; /// An element to display a widget over another. #[allow(missing_debug_implementations)] -pub struct Tooltip<'a, Message, Renderer: text::Renderer> { +pub struct Tooltip<'a, Message, Renderer: text::Renderer> +where + Renderer: text::Renderer, + Renderer::Theme: container::StyleSheet + widget::text::StyleSheet, +{ content: Element<'a, Message, Renderer>, tooltip: Text<Renderer>, position: Position, - style_sheet: Box<dyn StyleSheet + 'a>, gap: u16, padding: u16, + style: <Renderer::Theme as container::StyleSheet>::Style, } impl<'a, Message, Renderer> Tooltip<'a, Message, Renderer> where Renderer: text::Renderer, + Renderer::Theme: container::StyleSheet + widget::text::StyleSheet, { /// The default padding of a [`Tooltip`] drawn by this renderer. const DEFAULT_PADDING: u16 = 5; @@ -44,9 +50,9 @@ where content: content.into(), tooltip: Text::new(tooltip.to_string()), position, - style_sheet: Default::default(), gap: 0, padding: Self::DEFAULT_PADDING, + style: Default::default(), } } @@ -79,9 +85,9 @@ where /// Sets the style of the [`Tooltip`]. pub fn style( mut self, - style_sheet: impl Into<Box<dyn StyleSheet + 'a>>, + style: impl Into<<Renderer::Theme as container::StyleSheet>::Style>, ) -> Self { - self.style_sheet = style_sheet.into(); + self.style = style.into(); self } } @@ -90,6 +96,7 @@ impl<'a, Message, Renderer> Widget<Message, Renderer> for Tooltip<'a, Message, Renderer> where Renderer: text::Renderer, + Renderer::Theme: container::StyleSheet + widget::text::StyleSheet, { fn children(&self) -> Vec<Tree> { vec![Tree::new(&self.content)] @@ -157,6 +164,7 @@ where &self, tree: &Tree, renderer: &mut Renderer, + theme: &Renderer::Theme, inherited_style: &renderer::Style, layout: Layout<'_>, cursor_position: Point, @@ -165,6 +173,7 @@ where self.content.as_widget().draw( &tree.children[0], renderer, + theme, inherited_style, layout, cursor_position, @@ -175,6 +184,7 @@ where tooltip::draw( renderer, + theme, inherited_style, layout, cursor_position, @@ -182,7 +192,7 @@ where self.position, self.gap, self.padding, - self.style_sheet.as_ref(), + self.style, |renderer, limits| { Widget::<(), Renderer>::layout(tooltip, renderer, limits) }, @@ -191,6 +201,7 @@ where tooltip, &Tree::empty(), renderer, + theme, defaults, layout, cursor_position, @@ -217,8 +228,9 @@ where impl<'a, Message, Renderer> From<Tooltip<'a, Message, Renderer>> for Element<'a, Message, Renderer> where - Renderer: 'a + text::Renderer, Message: 'a, + Renderer: 'a + text::Renderer, + Renderer::Theme: container::StyleSheet + widget::text::StyleSheet, { fn from( tooltip: Tooltip<'a, Message, Renderer>, |