pub struct Padding<T, W> { /* private fields */ }
Expand description
A widget that just adds padding around its child.
Implementations§
Source§impl<T, W: Widget<T>> Padding<T, W>
impl<T, W: Widget<T>> Padding<T, W>
Sourcepub fn new(insets: impl Into<KeyOrValue<Insets>>, child: W) -> Padding<T, W>
pub fn new(insets: impl Into<KeyOrValue<Insets>>, child: W) -> Padding<T, W>
Create a new Padding
with the specified padding and child.
The insets
argument can either be an instance of Insets
,
a Key
referring to Insets
in the Env
,
an f64
for uniform padding, an (f64, f64)
for axis-uniform padding,
or (f64, f64, f64, f64)
(left, top, right, bottom) values.
§Examples
Uniform padding:
use druid::widget::{Label, Padding};
use druid::kurbo::Insets;
let _: Padding<(), _> = Padding::new(10.0, Label::new("uniform!"));
let _: Padding<(), _> = Padding::new(Insets::uniform(10.0), Label::new("uniform!"));
Uniform padding across each axis:
use druid::widget::{Label, Padding};
use druid::kurbo::Insets;
let child: Label<()> = Label::new("I need my space!");
let _: Padding<(), _> = Padding::new((10.0, 20.0), Label::new("more y than x!"));
// equivalent:
let _: Padding<(), _> = Padding::new(Insets::uniform_xy(10.0, 20.0), Label::new("ditto :)"));
Examples found in repository?
More examples
examples/multiwin.rs (line 67)
51fn ui_builder() -> impl Widget<State> {
52 let text = LocalizedString::new("hello-counter")
53 .with_arg("count", |data: &State, _env| data.menu_count.into());
54 let label = Label::new(text);
55 let inc_button =
56 Button::<State>::new("Add menu item").on_click(|_ctx, data, _env| data.menu_count += 1);
57 let dec_button = Button::<State>::new("Remove menu item")
58 .on_click(|_ctx, data, _env| data.menu_count = data.menu_count.saturating_sub(1));
59 let new_button = Button::<State>::new("New window").on_click(|ctx, _data, _env| {
60 ctx.submit_command(sys_cmds::NEW_FILE.to(Global));
61 });
62 let quit_button = Button::<State>::new("Quit app").on_click(|_ctx, _data, _env| {
63 Application::global().quit();
64 });
65
66 let mut col = Flex::column();
67 col.add_flex_child(Align::centered(Padding::new(5.0, label)), 1.0);
68 let mut row = Flex::row();
69 row.add_child(Padding::new(5.0, inc_button));
70 row.add_child(Padding::new(5.0, dec_button));
71 col.add_flex_child(Align::centered(row), 1.0);
72 let mut row = Flex::row();
73 row.add_child(Padding::new(5.0, new_button));
74 row.add_child(Padding::new(5.0, quit_button));
75 col.add_flex_child(Align::centered(row), 1.0);
76 let content = ControllerHost::new(col, ContextMenuController);
77 Glow::new(content)
78}
examples/switches.rs (line 41)
34fn build_widget() -> impl Widget<DemoState> {
35 let mut col = Flex::column();
36 let mut row = Flex::row();
37 let switch = LensWrap::new(Switch::new(), DemoState::value);
38 let check_box = LensWrap::new(Checkbox::new(""), DemoState::value);
39 let switch_label = Label::new("Setting label");
40
41 row.add_child(Padding::new(5.0, switch_label));
42 row.add_child(Padding::new(5.0, switch));
43 row.add_child(Padding::new(5.0, check_box));
44
45 let stepper = LensWrap::new(
46 Stepper::new()
47 .with_range(0.0, 10.0)
48 .with_step(0.5)
49 .with_wraparound(false),
50 DemoState::stepper_value,
51 );
52
53 let mut textbox_row = Flex::row();
54 // TODO: Replace Parse usage with TextBox::with_formatter
55 #[allow(deprecated)]
56 let textbox = LensWrap::new(
57 Parse::new(TextBox::new()),
58 DemoState::stepper_value.map(|x| Some(*x), |x, y| *x = y.unwrap_or(0.0)),
59 );
60 textbox_row.add_child(Padding::new(5.0, textbox));
61 textbox_row.add_child(Padding::new(5.0, stepper.center()));
62
63 let mut label_row = Flex::row();
64
65 let label = Label::new(|data: &DemoState, _env: &_| {
66 format!("Stepper value: {0:.2}", data.stepper_value)
67 });
68
69 label_row.add_child(Padding::new(5.0, label));
70
71 col.set_main_axis_alignment(MainAxisAlignment::Center);
72 col.add_child(Padding::new(5.0, row));
73 col.add_child(Padding::new(5.0, textbox_row));
74 col.add_child(Padding::new(5.0, label_row));
75 col.center()
76}
examples/split_demo.rs (lines 25-35)
24fn build_app() -> impl Widget<u32> {
25 let fixed_cols = Padding::new(
26 10.0,
27 Container::new(
28 Split::columns(
29 Align::centered(Label::new("Left Split")),
30 Align::centered(Label::new("Right Split")),
31 )
32 .split_point(0.5),
33 )
34 .border(Color::WHITE, 1.0),
35 );
36 let fixed_rows = Padding::new(
37 10.0,
38 Container::new(
39 Split::rows(
40 Align::centered(Label::new("Top Split")),
41 Align::centered(Label::new("Bottom Split")),
42 )
43 .split_point(0.4)
44 .bar_size(3.0),
45 )
46 .border(Color::WHITE, 1.0),
47 );
48 let draggable_cols = Padding::new(
49 10.0,
50 Container::new(
51 Split::columns(
52 Align::centered(Label::new("Split A")),
53 Align::centered(Label::new("Split B")),
54 )
55 .split_point(0.5)
56 .draggable(true)
57 .solid_bar(true)
58 .min_size(60.0, 60.0),
59 )
60 .border(Color::WHITE, 1.0),
61 );
62 Padding::new(
63 10.0,
64 Container::new(
65 Split::rows(
66 Split::rows(fixed_cols, fixed_rows)
67 .split_point(0.33)
68 .bar_size(3.0)
69 .min_bar_area(3.0)
70 .draggable(true),
71 draggable_cols,
72 )
73 .split_point(0.75)
74 .bar_size(5.0)
75 .min_bar_area(11.0)
76 .draggable(true),
77 )
78 .border(Color::WHITE, 1.0),
79 )
80}
Trait Implementations§
Source§impl<T: Data, W: Widget<T>> Widget<T> for Padding<T, W>
impl<T: Data, W: Widget<T>> Widget<T> for Padding<T, W>
Source§fn event(
&mut self,
ctx: &mut EventCtx<'_, '_>,
event: &Event,
data: &mut T,
env: &Env,
)
fn event( &mut self, ctx: &mut EventCtx<'_, '_>, event: &Event, data: &mut T, env: &Env, )
Handle an event. Read more
Source§fn lifecycle(
&mut self,
ctx: &mut LifeCycleCtx<'_, '_>,
event: &LifeCycle,
data: &T,
env: &Env,
)
fn lifecycle( &mut self, ctx: &mut LifeCycleCtx<'_, '_>, event: &LifeCycle, data: &T, env: &Env, )
Handle a life cycle notification. Read more
Source§fn layout(
&mut self,
ctx: &mut LayoutCtx<'_, '_>,
bc: &BoxConstraints,
data: &T,
env: &Env,
) -> Size
fn layout( &mut self, ctx: &mut LayoutCtx<'_, '_>, bc: &BoxConstraints, data: &T, env: &Env, ) -> Size
Compute layout. Read more
Source§fn paint(&mut self, ctx: &mut PaintCtx<'_, '_, '_>, data: &T, env: &Env)
fn paint(&mut self, ctx: &mut PaintCtx<'_, '_, '_>, data: &T, env: &Env)
Paint the widget appearance. Read more
Source§fn compute_max_intrinsic(
&mut self,
axis: Axis,
ctx: &mut LayoutCtx<'_, '_>,
bc: &BoxConstraints,
data: &T,
env: &Env,
) -> f64
fn compute_max_intrinsic( &mut self, axis: Axis, ctx: &mut LayoutCtx<'_, '_>, bc: &BoxConstraints, data: &T, env: &Env, ) -> f64
Computes max intrinsic/preferred dimension of a widget on the provided axis. Read more
Source§impl<T, W> WidgetWrapper for Padding<T, W>
impl<T, W> WidgetWrapper for Padding<T, W>
Source§type Wrapped = W
type Wrapped = W
The type of the wrapped widget.
Maybe we would like to constrain this to
Widget<impl Data>
(if existential bounds were supported).
Any other scheme leads to T
being unconstrained in unification at some pointSource§fn wrapped_mut(&mut self) -> &mut Self::Wrapped
fn wrapped_mut(&mut self) -> &mut Self::Wrapped
Get mutable access to the wrapped child
Auto Trait Implementations§
impl<T, W> !Freeze for Padding<T, W>
impl<T, W> !RefUnwindSafe for Padding<T, W>
impl<T, W> !Send for Padding<T, W>
impl<T, W> !Sync for Padding<T, W>
impl<T, W> Unpin for Padding<T, W>
impl<T, W> !UnwindSafe for Padding<T, W>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T, U> RoundInto<U> for Twhere
U: RoundFrom<T>,
impl<T, U> RoundInto<U> for Twhere
U: RoundFrom<T>,
Source§fn round_into(self) -> U
fn round_into(self) -> U
Performs the conversion.
Source§impl<T, W> TestWidgetExt<T> for W
impl<T, W> TestWidgetExt<T> for W
Source§impl<T, W> WidgetExt<T> for W
impl<T, W> WidgetExt<T> for W
Source§fn align_left(self) -> Align<T>
fn align_left(self) -> Align<T>
Wrap this widget in an
Align
widget, configured to align left.Source§fn align_right(self) -> Align<T>
fn align_right(self) -> Align<T>
Wrap this widget in an
Align
widget, configured to align right.Source§fn align_vertical(self, align: UnitPoint) -> Align<T>
fn align_vertical(self, align: UnitPoint) -> Align<T>
Wrap this widget in an
Align
widget, configured to align vertically.Source§fn align_horizontal(self, align: UnitPoint) -> Align<T>
fn align_horizontal(self, align: UnitPoint) -> Align<T>
Wrap this widget in an
Align
widget, configured to align horizontally.Source§fn fix_width(self, width: impl Into<KeyOrValue<f64>>) -> SizedBox<T>
fn fix_width(self, width: impl Into<KeyOrValue<f64>>) -> SizedBox<T>
Wrap this widget in a
SizedBox
with an explicit width.Source§fn fix_height(self, height: impl Into<KeyOrValue<f64>>) -> SizedBox<T>
fn fix_height(self, height: impl Into<KeyOrValue<f64>>) -> SizedBox<T>
Wrap this widget in a
SizedBox
with an explicit height.Source§fn fix_size(
self,
width: impl Into<KeyOrValue<f64>>,
height: impl Into<KeyOrValue<f64>>,
) -> SizedBox<T>
fn fix_size( self, width: impl Into<KeyOrValue<f64>>, height: impl Into<KeyOrValue<f64>>, ) -> SizedBox<T>
Wrap this widget in an
SizedBox
with an explicit width and heightSource§fn expand_width(self) -> SizedBox<T>
fn expand_width(self) -> SizedBox<T>
Source§fn expand_height(self) -> SizedBox<T>
fn expand_height(self) -> SizedBox<T>
Source§fn background(self, brush: impl Into<BackgroundBrush<T>>) -> Container<T>
fn background(self, brush: impl Into<BackgroundBrush<T>>) -> Container<T>
Source§fn foreground(self, brush: impl Into<BackgroundBrush<T>>) -> Container<T>
fn foreground(self, brush: impl Into<BackgroundBrush<T>>) -> Container<T>
Source§fn border(
self,
color: impl Into<KeyOrValue<Color>>,
width: impl Into<KeyOrValue<f64>>,
) -> Container<T>
fn border( self, color: impl Into<KeyOrValue<Color>>, width: impl Into<KeyOrValue<f64>>, ) -> Container<T>
Source§fn controller<C: Controller<T, Self>>(
self,
controller: C,
) -> ControllerHost<Self, C>
fn controller<C: Controller<T, Self>>( self, controller: C, ) -> ControllerHost<Self, C>
Wrap this widget with the provided
Controller
.Source§fn on_added(
self,
f: impl Fn(&mut Self, &mut LifeCycleCtx<'_, '_>, &T, &Env) + 'static,
) -> ControllerHost<Self, Added<T, Self>>
fn on_added( self, f: impl Fn(&mut Self, &mut LifeCycleCtx<'_, '_>, &T, &Env) + 'static, ) -> ControllerHost<Self, Added<T, Self>>
Provide a closure that will be called when this widget is added to the widget tree. Read more
Source§fn on_click(
self,
f: impl Fn(&mut EventCtx<'_, '_>, &mut T, &Env) + 'static,
) -> ControllerHost<Self, Click<T>>
fn on_click( self, f: impl Fn(&mut EventCtx<'_, '_>, &mut T, &Env) + 'static, ) -> ControllerHost<Self, Click<T>>
Source§fn debug_paint_layout(self) -> EnvScope<T, Self>
fn debug_paint_layout(self) -> EnvScope<T, Self>
Draw the
layout
Rect
s of this widget and its children.Source§fn debug_widget_id(self) -> EnvScope<T, Self>
fn debug_widget_id(self) -> EnvScope<T, Self>
Display the
WidgetId
s for this widget and its children, when hot. Read moreSource§fn debug_invalidation(self) -> DebugInvalidation<T, Self>
fn debug_invalidation(self) -> DebugInvalidation<T, Self>
Draw a color-changing rectangle over this widget, allowing you to see the
invalidation regions.
Source§fn debug_widget(self) -> EnvScope<T, Self>
fn debug_widget(self) -> EnvScope<T, Self>
Set the
DEBUG_WIDGET
env variable for this widget (and its descendants). Read moreSource§fn with_id(self, id: WidgetId) -> IdentityWrapper<Self>
fn with_id(self, id: WidgetId) -> IdentityWrapper<Self>
Source§fn disabled_if(
self,
disabled_if: impl Fn(&T, &Env) -> bool + 'static,
) -> DisabledIf<T, Self>
fn disabled_if( self, disabled_if: impl Fn(&T, &Env) -> bool + 'static, ) -> DisabledIf<T, Self>
Wrap this widget in a
DisabledIf
widget. Read more