Skip to content

Commit

Permalink
Merge pull request #2441 from iced-rs/feature/explicit-length-in-cent…
Browse files Browse the repository at this point in the history
…er-methods

Ask for explicit `Length` in `center_*` methods
  • Loading branch information
hecrj authored May 13, 2024
2 parents b30d34f + 05f69f4 commit e69e2c0
Show file tree
Hide file tree
Showing 13 changed files with 40 additions and 41 deletions.
2 changes: 1 addition & 1 deletion examples/editor/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,7 @@ fn action<'a, Message: Clone + 'a>(
label: &'a str,
on_press: Option<Message>,
) -> Element<'a, Message> {
let action = button(container(content).center_x().width(30));
let action = button(container(content).center_x(30));

if let Some(on_press) = on_press {
tooltip(
Expand Down
6 changes: 3 additions & 3 deletions examples/geometry/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ mod rainbow {
}

use iced::widget::{column, container, scrollable};
use iced::Element;
use iced::{Element, Length};
use rainbow::rainbow;

pub fn main() -> iced::Result {
Expand All @@ -176,7 +176,7 @@ fn view(_state: &()) -> Element<'_, ()> {
.spacing(20)
.max_width(500);

let scrollable = scrollable(container(content).center_x());
let scrollable = scrollable(container(content).center_x(Length::Fill));

container(scrollable).center_y().into()
container(scrollable).center_y(Length::Fill).into()
}
2 changes: 1 addition & 1 deletion examples/layout/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,7 @@ fn application<'a>() -> Element<'a, Message> {
.align_items(Alignment::Center),
)
.style(container::rounded_box)
.center_y();
.center_y(Length::Fill);

let content = container(
scrollable(
Expand Down
2 changes: 1 addition & 1 deletion examples/multi_window/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,6 @@ impl Window {
.align_items(Alignment::Center),
);

container(content).center_x().width(200).into()
container(content).center_x(200).into()
}
}
5 changes: 4 additions & 1 deletion examples/pane_grid/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -291,7 +291,10 @@ fn view_content<'a>(
.spacing(10)
.align_items(Alignment::Center);

container(scrollable(content)).center_y().padding(5).into()
container(scrollable(content))
.center_y(Length::Fill)
.padding(5)
.into()
}

fn view_controls<'a>(
Expand Down
7 changes: 3 additions & 4 deletions examples/screenshot/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -123,10 +123,9 @@ impl Example {
};

let image = container(image)
.center_y()
.center_y(Length::FillPortion(2))
.padding(10)
.style(container::rounded_box)
.width(Length::FillPortion(2));
.style(container::rounded_box);

let crop_origin_controls = row![
text("X:")
Expand Down Expand Up @@ -211,7 +210,7 @@ impl Example {
.spacing(40)
};

let side_content = container(controls).center_y();
let side_content = container(controls).center_y(Length::Fill);

let content = row![side_content, image]
.spacing(10)
Expand Down
8 changes: 4 additions & 4 deletions examples/slider/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use iced::widget::{center, column, container, slider, text, vertical_slider};
use iced::Element;
use iced::{Element, Length};

pub fn main() -> iced::Result {
iced::run("Slider - Iced", Slider::update, Slider::view)
Expand Down Expand Up @@ -56,9 +56,9 @@ impl Slider {

center(
column![
container(v_slider).center_x(),
container(h_slider).center_x(),
container(text).center_x()
container(v_slider).center_x(Length::Fill),
container(h_slider).center_x(Length::Fill),
container(text).center_x(Length::Fill)
]
.spacing(25),
)
Expand Down
2 changes: 1 addition & 1 deletion examples/svg/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ impl Tiger {
.on_toggle(Message::ToggleColorFilter);

center(
column![svg, container(apply_color_filter).center_x()]
column![svg, container(apply_color_filter).center_x(Length::Fill)]
.spacing(20)
.height(Length::Fill),
)
Expand Down
4 changes: 2 additions & 2 deletions examples/system_information/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use iced::widget::{button, column, container, text};
use iced::widget::{button, center, column, text};
use iced::{system, Command, Element};

pub fn main() -> iced::Result {
Expand Down Expand Up @@ -136,6 +136,6 @@ impl Example {
}
};

container(content).center().into()
center(content).into()
}
}
5 changes: 4 additions & 1 deletion examples/todos/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,10 @@ impl Todos {
.spacing(20)
.max_width(800);

scrollable(container(content).center_x().padding(40)).into()
scrollable(
container(content).center_x(Length::Fill).padding(40),
)
.into()
}
}
}
Expand Down
6 changes: 3 additions & 3 deletions examples/tour/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -76,10 +76,10 @@ impl Tour {
} else {
content
})
.center_x(),
.center_x(Length::Fill),
);

container(scrollable).center_y().into()
container(scrollable).center_y(Length::Fill).into()
}
}

Expand Down Expand Up @@ -669,7 +669,7 @@ fn ferris<'a>(
.filter_method(filter_method)
.width(width),
)
.center_x()
.center_x(Length::Fill)
}

fn padded_button<Message: Clone>(label: &str) -> Button<'_, Message> {
Expand Down
27 changes: 10 additions & 17 deletions widget/src/container.rs
Original file line number Diff line number Diff line change
Expand Up @@ -122,9 +122,6 @@ where

/// Sets the [`Container`] to fill all the available space.
///
/// This can be useful to quickly position content when chained with
/// alignment functions—like [`center`].
///
/// Calling this method is equivalent to chaining [`fill_x`] and
/// [`fill_y`].
///
Expand Down Expand Up @@ -159,20 +156,14 @@ where
self
}

/// Sets the [`Container`] to fill the available space in the horizontal axis
/// and centers its contents there.
pub fn center_x(mut self) -> Self {
self.width = Length::Fill;
self.horizontal_alignment = alignment::Horizontal::Center;
self
/// Sets the width of the [`Container`] and centers its contents horizontally.
pub fn center_x(self, width: impl Into<Length>) -> Self {
self.width(width).align_x(alignment::Horizontal::Center)
}

/// Sets the [`Container`] to fill the available space in the vertical axis
/// and centers its contents there.
pub fn center_y(mut self) -> Self {
self.height = Length::Fill;
self.vertical_alignment = alignment::Vertical::Center;
self
/// Sets the height of the [`Container`] and centers its contents vertically.
pub fn center_y(self, height: impl Into<Length>) -> Self {
self.height(height).align_y(alignment::Vertical::Center)
}

/// Centers the contents in both the horizontal and vertical axes of the
Expand All @@ -182,8 +173,10 @@ where
///
/// [`center_x`]: Self::center_x
/// [`center_y`]: Self::center_y
pub fn center(self) -> Self {
self.center_x().center_y()
pub fn center(self, length: impl Into<Length>) -> Self {
let length = length.into();

self.center_x(length).center_y(length)
}

/// Sets whether the contents of the [`Container`] should be clipped on
Expand Down
5 changes: 3 additions & 2 deletions widget/src/helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,10 @@ where
///
/// This is equivalent to:
/// ```rust,no_run
/// # use iced_widget::core::Length;
/// # use iced_widget::Container;
/// # fn container<A>(x: A) -> Container<'static, ()> { unreachable!() }
/// let centered = container("Centered!").center();
/// let centered = container("Centered!").center(Length::Fill);
/// ```
///
/// [`Container`]: crate::Container
Expand All @@ -96,7 +97,7 @@ where
Theme: container::Catalog + 'a,
Renderer: core::Renderer,
{
container(content).fill().center()
container(content).center(Length::Fill)
}

/// Creates a new [`Column`] with the given children.
Expand Down

0 comments on commit e69e2c0

Please sign in to comment.