summaryrefslogtreecommitdiffstats
path: root/widget/src
diff options
context:
space:
mode:
Diffstat (limited to 'widget/src')
-rw-r--r--widget/src/helpers.rs6
-rw-r--r--widget/src/tooltip.rs50
2 files changed, 18 insertions, 38 deletions
diff --git a/widget/src/helpers.rs b/widget/src/helpers.rs
index 3f34d165..a643add3 100644
--- a/widget/src/helpers.rs
+++ b/widget/src/helpers.rs
@@ -123,20 +123,20 @@ where
Button::new(content)
}
-/// Creates a new [`Tooltip`] with the provided content, tooltip text, and [`tooltip::Position`].
+/// Creates a new [`Tooltip`] with the provided content, tooltip element, and [`tooltip::Position`].
///
/// [`Tooltip`]: crate::Tooltip
/// [`tooltip::Position`]: crate::tooltip::Position
pub fn tooltip<'a, Message, Theme, Renderer>(
content: impl Into<Element<'a, Message, Theme, Renderer>>,
- tooltip: impl ToString,
+ tooltip: impl Into<Element<'a, Message, Theme, Renderer>>,
position: tooltip::Position,
) -> crate::Tooltip<'a, Message, Theme, Renderer>
where
Theme: container::StyleSheet + text::StyleSheet,
Renderer: core::text::Renderer,
{
- Tooltip::new(content, tooltip.to_string(), position)
+ Tooltip::new(content, tooltip, position)
}
/// Creates a new [`Text`] widget with the provided content.
diff --git a/widget/src/tooltip.rs b/widget/src/tooltip.rs
index 87bec932..a6eb783c 100644
--- a/widget/src/tooltip.rs
+++ b/widget/src/tooltip.rs
@@ -11,9 +11,6 @@ use crate::core::{
Clipboard, Element, Length, Padding, Pixels, Point, Rectangle, Shell, Size,
Vector,
};
-use crate::Text;
-
-use std::borrow::Cow;
/// An element to display a widget over another.
#[allow(missing_debug_implementations)]
@@ -27,7 +24,7 @@ pub struct Tooltip<
Renderer: text::Renderer,
{
content: Element<'a, Message, Theme, Renderer>,
- tooltip: Text<'a, Theme, Renderer>,
+ tooltip: Element<'a, Message, Theme, Renderer>,
position: Position,
gap: f32,
padding: f32,
@@ -48,12 +45,12 @@ where
/// [`Tooltip`]: struct.Tooltip.html
pub fn new(
content: impl Into<Element<'a, Message, Theme, Renderer>>,
- tooltip: impl Into<Cow<'a, str>>,
+ tooltip: impl Into<Element<'a, Message, Theme, Renderer>>,
position: Position,
) -> Self {
Tooltip {
content: content.into(),
- tooltip: Text::new(tooltip),
+ tooltip: tooltip.into(),
position,
gap: 0.0,
padding: Self::DEFAULT_PADDING,
@@ -62,26 +59,6 @@ where
}
}
- /// Sets the size of the text of the [`Tooltip`].
- pub fn size(mut self, size: impl Into<Pixels>) -> Self {
- self.tooltip = self.tooltip.size(size);
- self
- }
-
- /// Sets the [`text::Shaping`] strategy of the [`Tooltip`].
- pub fn text_shaping(mut self, shaping: text::Shaping) -> Self {
- self.tooltip = self.tooltip.shaping(shaping);
- self
- }
-
- /// Sets the font of the [`Tooltip`].
- ///
- /// [`Font`]: Renderer::Font
- pub fn font(mut self, font: impl Into<Renderer::Font>) -> Self {
- self.tooltip = self.tooltip.font(font);
- self
- }
-
/// Sets the gap between the content and its [`Tooltip`].
pub fn gap(mut self, gap: impl Into<Pixels>) -> Self {
self.gap = gap.into().0;
@@ -119,12 +96,15 @@ where
fn children(&self) -> Vec<widget::Tree> {
vec![
widget::Tree::new(&self.content),
- widget::Tree::new(&self.tooltip as &dyn Widget<Message, _, _>),
+ widget::Tree::new(&self.tooltip),
]
}
fn diff(&self, tree: &mut widget::Tree) {
- tree.diff_children(&[self.content.as_widget(), &self.tooltip]);
+ tree.diff_children(&[
+ self.content.as_widget(),
+ self.tooltip.as_widget(),
+ ]);
}
fn state(&self) -> widget::tree::State {
@@ -312,13 +292,13 @@ enum State {
},
}
-struct Overlay<'a, 'b, Theme, Renderer>
+struct Overlay<'a, 'b, Message, Theme, Renderer>
where
Theme: container::StyleSheet + widget::text::StyleSheet,
Renderer: text::Renderer,
{
position: Point,
- tooltip: &'b Text<'a, Theme, Renderer>,
+ tooltip: &'b Element<'a, Message, Theme, Renderer>,
state: &'b mut widget::Tree,
cursor_position: Point,
content_bounds: Rectangle,
@@ -331,7 +311,7 @@ where
impl<'a, 'b, Message, Theme, Renderer>
overlay::Overlay<Message, Theme, Renderer>
- for Overlay<'a, 'b, Theme, Renderer>
+ for Overlay<'a, 'b, Message, Theme, Renderer>
where
Theme: container::StyleSheet + widget::text::StyleSheet,
Renderer: text::Renderer,
@@ -339,8 +319,8 @@ where
fn layout(&mut self, renderer: &Renderer, bounds: Size) -> layout::Node {
let viewport = Rectangle::with_size(bounds);
- let text_layout = Widget::<(), Theme, Renderer>::layout(
- self.tooltip,
+ let text_layout = Widget::<Message, Theme, Renderer>::layout(
+ self.tooltip.as_widget(),
self.state,
renderer,
&layout::Limits::new(
@@ -450,8 +430,8 @@ where
text_color: style.text_color.unwrap_or(inherited_style.text_color),
};
- Widget::<(), Theme, Renderer>::draw(
- self.tooltip,
+ Widget::<Message, Theme, Renderer>::draw(
+ self.tooltip.as_widget(),
self.state,
renderer,
theme,