Add support for asymmetrical padding
This commit is contained in:
parent
a9eb591628
commit
fe0a27c56d
27 changed files with 339 additions and 195 deletions
|
|
@ -8,7 +8,8 @@ use crate::scrollable;
|
|||
use crate::text;
|
||||
use crate::touch;
|
||||
use crate::{
|
||||
Clipboard, Element, Hasher, Layout, Length, Point, Rectangle, Size, Widget,
|
||||
Clipboard, Element, Hasher, Layout, Length, Padding, Point, Rectangle,
|
||||
Size, Widget,
|
||||
};
|
||||
use std::borrow::Cow;
|
||||
|
||||
|
|
@ -26,7 +27,7 @@ where
|
|||
options: Cow<'a, [T]>,
|
||||
selected: Option<T>,
|
||||
width: Length,
|
||||
padding: u16,
|
||||
padding: Padding,
|
||||
text_size: Option<u16>,
|
||||
font: Renderer::Font,
|
||||
style: <Renderer as self::Renderer>::Style,
|
||||
|
|
@ -96,9 +97,14 @@ where
|
|||
self
|
||||
}
|
||||
|
||||
/// Sets the padding of the [`PickList`].
|
||||
pub fn padding(mut self, padding: u16) -> Self {
|
||||
self.padding = padding;
|
||||
/// Sets the [`Padding`] of the [`PickList`].
|
||||
///```ignore
|
||||
/// PickList::new(/*...*/).padding(20); // 20px on all sides
|
||||
/// PickList::new(/*...*/).padding([10, 20]); // top/bottom, left/right
|
||||
/// PickList::new(/*...*/).padding([5, 10, 15, 20]); // top, right, bottom, left
|
||||
/// ```
|
||||
pub fn padding<P: Into<Padding>>(mut self, padding: P) -> Self {
|
||||
self.padding = padding.into();
|
||||
self
|
||||
}
|
||||
|
||||
|
|
@ -150,7 +156,7 @@ where
|
|||
let limits = limits
|
||||
.width(self.width)
|
||||
.height(Length::Shrink)
|
||||
.pad(f32::from(self.padding));
|
||||
.pad(self.padding);
|
||||
|
||||
let text_size = self.text_size.unwrap_or(renderer.default_size());
|
||||
|
||||
|
|
@ -179,11 +185,11 @@ where
|
|||
let intrinsic = Size::new(
|
||||
max_width as f32
|
||||
+ f32::from(text_size)
|
||||
+ f32::from(self.padding),
|
||||
+ f32::from(self.padding.left),
|
||||
f32::from(text_size),
|
||||
);
|
||||
|
||||
limits.resolve(intrinsic).pad(f32::from(self.padding))
|
||||
limits.resolve(intrinsic).pad(self.padding)
|
||||
};
|
||||
|
||||
layout::Node::new(size)
|
||||
|
|
@ -308,7 +314,7 @@ where
|
|||
/// [renderer]: crate::renderer
|
||||
pub trait Renderer: text::Renderer + menu::Renderer {
|
||||
/// The default padding of a [`PickList`].
|
||||
const DEFAULT_PADDING: u16;
|
||||
const DEFAULT_PADDING: Padding;
|
||||
|
||||
/// The [`PickList`] style supported by this renderer.
|
||||
type Style: Default;
|
||||
|
|
@ -324,7 +330,7 @@ pub trait Renderer: text::Renderer + menu::Renderer {
|
|||
bounds: Rectangle,
|
||||
cursor_position: Point,
|
||||
selected: Option<String>,
|
||||
padding: u16,
|
||||
padding: Padding,
|
||||
text_size: u16,
|
||||
font: Self::Font,
|
||||
style: &<Self as Renderer>::Style,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue