summaryrefslogtreecommitdiffstats
path: root/native/src/widget/tooltip.rs
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2021-02-23 04:00:35 +0100
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2021-02-23 04:00:35 +0100
commit4e923290ccb38dc9cee05592554f98f1f0f12966 (patch)
tree762426ef3cd8bd53c8791463d09a2674721df601 /native/src/widget/tooltip.rs
parent9d4996cbab012559c73852145b9968f6b101663a (diff)
downloadiced-4e923290ccb38dc9cee05592554f98f1f0f12966.tar.gz
iced-4e923290ccb38dc9cee05592554f98f1f0f12966.tar.bz2
iced-4e923290ccb38dc9cee05592554f98f1f0f12966.zip
Add `style` and `padding` to `Tooltip`
Diffstat (limited to 'native/src/widget/tooltip.rs')
-rw-r--r--native/src/widget/tooltip.rs40
1 files changed, 33 insertions, 7 deletions
diff --git a/native/src/widget/tooltip.rs b/native/src/widget/tooltip.rs
index 6da7b0ca..56559827 100644
--- a/native/src/widget/tooltip.rs
+++ b/native/src/widget/tooltip.rs
@@ -3,6 +3,7 @@ use std::hash::Hash;
use iced_core::Rectangle;
+use crate::widget::container;
use crate::widget::text::{self, Text};
use crate::{
event, layout, Clipboard, Element, Event, Hasher, Layout, Length, Point,
@@ -11,16 +12,18 @@ use crate::{
/// An element to display a widget over another.
#[allow(missing_debug_implementations)]
-pub struct Tooltip<'a, Message, Renderer: self::Renderer + text::Renderer> {
+pub struct Tooltip<'a, Message, Renderer: self::Renderer> {
content: Element<'a, Message, Renderer>,
tooltip: Text<Renderer>,
position: Position,
+ style: <Renderer as container::Renderer>::Style,
gap: u16,
+ padding: u16,
}
impl<'a, Message, Renderer> Tooltip<'a, Message, Renderer>
where
- Renderer: self::Renderer + text::Renderer,
+ Renderer: self::Renderer,
{
/// Creates an empty [`Tooltip`].
///
@@ -34,15 +37,32 @@ where
content: content.into(),
tooltip,
position,
+ style: Default::default(),
gap: 0,
+ padding: Renderer::DEFAULT_PADDING,
}
}
+ /// Sets the style of the [`Tooltip`].
+ pub fn style(
+ mut self,
+ style: impl Into<<Renderer as container::Renderer>::Style>,
+ ) -> Self {
+ self.style = style.into();
+ self
+ }
+
/// Sets the gap between the content and its [`Tooltip`].
pub fn gap(mut self, gap: u16) -> Self {
self.gap = gap;
self
}
+
+ /// Sets the padding of the [`Tooltip`].
+ pub fn padding(mut self, padding: u16) -> Self {
+ self.padding = padding;
+ self
+ }
}
/// The position of the tooltip. Defaults to following the cursor.
@@ -63,7 +83,7 @@ pub enum Position {
impl<'a, Message, Renderer> Widget<Message, Renderer>
for Tooltip<'a, Message, Renderer>
where
- Renderer: self::Renderer + text::Renderer,
+ Renderer: self::Renderer,
{
fn width(&self) -> Length {
self.content.width()
@@ -117,7 +137,9 @@ where
&self.content,
&self.tooltip,
self.position,
+ &self.style,
self.gap,
+ self.padding,
)
}
@@ -136,9 +158,11 @@ where
///
/// [`Tooltip`]: struct.Tooltip.html
/// [renderer]: ../../renderer/index.html
-pub trait Renderer: crate::Renderer + text::Renderer {
- /// The style supported by this renderer.
- type Style: Default;
+pub trait Renderer:
+ crate::Renderer + text::Renderer + container::Renderer
+{
+ /// The default padding of a [`Tooltip`] drawn by this renderer.
+ const DEFAULT_PADDING: u16;
/// Draws a [`Tooltip`].
///
@@ -152,14 +176,16 @@ pub trait Renderer: crate::Renderer + text::Renderer {
content: &Element<'_, Message, Self>,
tooltip: &Text<Self>,
position: Position,
+ style: &<Self as container::Renderer>::Style,
gap: u16,
+ padding: u16,
) -> Self::Output;
}
impl<'a, Message, Renderer> From<Tooltip<'a, Message, Renderer>>
for Element<'a, Message, Renderer>
where
- Renderer: 'a + self::Renderer + text::Renderer,
+ Renderer: 'a + self::Renderer,
Message: 'a,
{
fn from(