diff options
-rw-r--r-- | examples/clock/src/main.rs | 1 | ||||
-rw-r--r-- | examples/pane_grid/src/main.rs | 6 | ||||
-rw-r--r-- | examples/pokedex/src/main.rs | 2 | ||||
-rw-r--r-- | examples/svg/src/main.rs | 21 | ||||
-rw-r--r-- | native/src/layout/flex.rs | 5 | ||||
-rw-r--r-- | native/src/widget/container.rs | 19 | ||||
-rw-r--r-- | web/src/widget/container.rs | 15 |
7 files changed, 47 insertions, 22 deletions
diff --git a/examples/clock/src/main.rs b/examples/clock/src/main.rs index d8266f06..62acb457 100644 --- a/examples/clock/src/main.rs +++ b/examples/clock/src/main.rs @@ -66,6 +66,7 @@ impl Application for Clock { Container::new(canvas) .width(Length::Fill) .height(Length::Fill) + .padding(20) .center_x() .center_y() .into() diff --git a/examples/pane_grid/src/main.rs b/examples/pane_grid/src/main.rs index dafc396c..b4bbd68f 100644 --- a/examples/pane_grid/src/main.rs +++ b/examples/pane_grid/src/main.rs @@ -106,11 +106,10 @@ impl Sandbox for Example { .on_resize(Message::Resized) .on_key_press(handle_hotkey); - Column::new() + Container::new(pane_grid) .width(Length::Fill) .height(Length::Fill) .padding(10) - .push(pane_grid) .into() } } @@ -213,9 +212,10 @@ impl Content { .push(Text::new(format!("Pane {}", id)).size(30)) .push(controls); - Container::new(Column::new().padding(5).push(content)) + Container::new(content) .width(Length::Fill) .height(Length::Fill) + .padding(5) .center_y() .style(style::Pane { is_focused: focus.is_some(), diff --git a/examples/pokedex/src/main.rs b/examples/pokedex/src/main.rs index 4449b901..aec05287 100644 --- a/examples/pokedex/src/main.rs +++ b/examples/pokedex/src/main.rs @@ -225,7 +225,7 @@ enum Error { impl From<reqwest::Error> for Error { fn from(error: reqwest::Error) -> Error { - dbg!(&error); + dbg!(error); Error::APIError } diff --git a/examples/svg/src/main.rs b/examples/svg/src/main.rs index 811fdfb5..9b785fc4 100644 --- a/examples/svg/src/main.rs +++ b/examples/svg/src/main.rs @@ -1,4 +1,4 @@ -use iced::{Column, Container, Element, Length, Sandbox, Settings, Svg}; +use iced::{Container, Element, Length, Sandbox, Settings, Svg}; pub fn main() { env_logger::init(); @@ -23,18 +23,17 @@ impl Sandbox for Tiger { fn update(&mut self, _message: ()) {} fn view(&mut self) -> Element<()> { - let content = Column::new().padding(20).push( - Svg::new(format!( - "{}/resources/tiger.svg", - env!("CARGO_MANIFEST_DIR") - )) - .width(Length::Fill) - .height(Length::Fill), - ); - - Container::new(content) + let svg = Svg::new(format!( + "{}/resources/tiger.svg", + env!("CARGO_MANIFEST_DIR") + )) + .width(Length::Fill) + .height(Length::Fill); + + Container::new(svg) .width(Length::Fill) .height(Length::Fill) + .padding(20) .center_x() .center_y() .into() diff --git a/native/src/layout/flex.rs b/native/src/layout/flex.rs index 2f65f1c1..9da75a21 100644 --- a/native/src/layout/flex.rs +++ b/native/src/layout/flex.rs @@ -171,8 +171,5 @@ where let (width, height) = axis.pack(main - padding, cross); let size = limits.resolve(Size::new(width, height)); - Node::with_children( - Size::new(size.width + padding * 2.0, size.height + padding * 2.0), - nodes, - ) + Node::with_children(size.pad(padding), nodes) } diff --git a/native/src/widget/container.rs b/native/src/widget/container.rs index 11ef23a9..34032c3a 100644 --- a/native/src/widget/container.rs +++ b/native/src/widget/container.rs @@ -13,6 +13,7 @@ use std::u32; /// It is normally used for alignment purposes. #[allow(missing_debug_implementations)] pub struct Container<'a, Message, Renderer: self::Renderer> { + padding: u16, width: Length, height: Length, max_width: u32, @@ -35,6 +36,7 @@ where T: Into<Element<'a, Message, Renderer>>, { Container { + padding: 0, width: Length::Shrink, height: Length::Shrink, max_width: u32::MAX, @@ -46,6 +48,14 @@ where } } + /// Sets the padding of the [`Container`]. + /// + /// [`Container`]: struct.Column.html + pub fn padding(mut self, units: u16) -> Self { + self.padding = units; + self + } + /// Sets the width of the [`Container`]. /// /// [`Container`]: struct.Container.html @@ -137,19 +147,23 @@ where renderer: &Renderer, limits: &layout::Limits, ) -> layout::Node { + let padding = f32::from(self.padding); + let limits = limits .loose() .max_width(self.max_width) .max_height(self.max_height) .width(self.width) - .height(self.height); + .height(self.height) + .pad(padding); let mut content = self.content.layout(renderer, &limits.loose()); let size = limits.resolve(content.size()); + content.move_to(Point::new(padding, padding)); content.align(self.horizontal_alignment, self.vertical_alignment, size); - layout::Node::with_children(size, vec![content]) + layout::Node::with_children(size.pad(padding), vec![content]) } fn on_event( @@ -191,6 +205,7 @@ where fn hash_layout(&self, state: &mut Hasher) { std::any::TypeId::of::<Container<'_, (), Renderer>>().hash(state); + self.padding.hash(state); self.width.hash(state); self.height.hash(state); self.max_width.hash(state); diff --git a/web/src/widget/container.rs b/web/src/widget/container.rs index 8e4318f9..78be3543 100644 --- a/web/src/widget/container.rs +++ b/web/src/widget/container.rs @@ -8,6 +8,7 @@ pub use iced_style::container::{Style, StyleSheet}; /// It is normally used for alignment purposes. #[allow(missing_debug_implementations)] pub struct Container<'a, Message> { + padding: u16, width: Length, height: Length, max_width: u32, @@ -29,6 +30,7 @@ impl<'a, Message> Container<'a, Message> { use std::u32; Container { + padding: 0, width: Length::Shrink, height: Length::Shrink, max_width: u32::MAX, @@ -40,6 +42,14 @@ impl<'a, Message> Container<'a, Message> { } } + /// Sets the padding of the [`Container`]. + /// + /// [`Container`]: struct.Column.html + pub fn padding(mut self, units: u16) -> Self { + self.padding = units; + self + } + /// Sets the width of the [`Container`]. /// /// [`Container`]: struct.Container.html @@ -113,12 +123,15 @@ where let column_class = style_sheet.insert(bump, css::Rule::Column); + let padding_class = + style_sheet.insert(bump, css::Rule::Padding(self.padding)); + let style = self.style_sheet.style(); let node = div(bump) .attr( "class", - bumpalo::format!(in bump, "{}", column_class).into_bump_str(), + bumpalo::format!(in bump, "{} {}", column_class, padding_class).into_bump_str(), ) .attr( "style", |