Rename space_{x,y} to space::{horizontal,vertical}

This commit is contained in:
Héctor Ramón Jiménez 2025-09-17 23:49:01 +02:00
parent 299eb54d6f
commit 611f89fc59
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
25 changed files with 143 additions and 142 deletions

View file

@ -24,7 +24,7 @@ use crate::runtime::task::{self, Task};
use crate::time_machine::TimeMachine; use crate::time_machine::TimeMachine;
use crate::widget::{ use crate::widget::{
bottom_right, button, center, column, container, opaque, row, scrollable, bottom_right, button, center, column, container, opaque, row, scrollable,
space_x, stack, text, themer, space, stack, text, themer,
}; };
use std::fmt; use std::fmt;
@ -447,7 +447,7 @@ where
.width(100) .width(100)
.on_press(Message::CancelSetup) .on_press(Message::CancelSetup)
.style(button::danger), .style(button::danger),
space_x(), space::horizontal(),
button( button(
text(match goal { text(match goal {
Goal::Installation => "Install", Goal::Installation => "Install",
@ -497,13 +497,13 @@ where
let comparison = column![ let comparison = column![
row![ row![
"Installed revision:", "Installed revision:",
space_x(), space::horizontal(),
inline_code(revision.as_deref().unwrap_or("Unknown")) inline_code(revision.as_deref().unwrap_or("Unknown"))
] ]
.align_y(Center), .align_y(Center),
row![ row![
"Compatible revision:", "Compatible revision:",
space_x(), space::horizontal(),
inline_code(comet::COMPATIBLE_REVISION), inline_code(comet::COMPATIBLE_REVISION),
] ]
.align_y(Center) .align_y(Center)

View file

@ -1,5 +1,5 @@
//! This example showcases an interactive `Canvas` for drawing Bézier curves. //! This example showcases an interactive `Canvas` for drawing Bézier curves.
use iced::widget::{button, container, hover, right, space_x}; use iced::widget::{button, container, hover, right, space};
use iced::{Element, Theme}; use iced::{Element, Theme};
pub fn main() -> iced::Result { pub fn main() -> iced::Result {
@ -38,7 +38,7 @@ impl Example {
container(hover( container(hover(
self.bezier.view(&self.curves).map(Message::AddCurve), self.bezier.view(&self.curves).map(Message::AddCurve),
if self.curves.is_empty() { if self.curves.is_empty() {
container(space_x()) container(space::horizontal())
} else { } else {
right( right(
button("Clear") button("Clear")

View file

@ -1,4 +1,4 @@
use iced::widget::{center, column, combo_box, scrollable, space_y, text}; use iced::widget::{center, column, combo_box, scrollable, space, text};
use iced::{Center, Element, Fill}; use iced::{Center, Element, Fill};
pub fn main() -> iced::Result { pub fn main() -> iced::Result {
@ -60,7 +60,7 @@ impl Example {
text(&self.text), text(&self.text),
"What is your language?", "What is your language?",
combo_box, combo_box,
space_y().height(150), space().height(150),
] ]
.width(Fill) .width(Fill)
.align_x(Center) .align_x(Center)

View file

@ -1,7 +1,7 @@
use iced::highlighter; use iced::highlighter;
use iced::keyboard; use iced::keyboard;
use iced::widget::{ use iced::widget::{
button, center_x, column, container, operation, pick_list, row, space_x, button, center_x, column, container, operation, pick_list, row, space,
text, text_editor, toggler, tooltip, text, text_editor, toggler, tooltip,
}; };
use iced::{Center, Element, Fill, Font, Task, Theme}; use iced::{Center, Element, Fill, Font, Task, Theme};
@ -157,7 +157,7 @@ impl Editor {
"Save file", "Save file",
self.is_dirty.then_some(Message::SaveFile) self.is_dirty.then_some(Message::SaveFile)
), ),
space_x(), space::horizontal(),
toggler(self.word_wrap) toggler(self.word_wrap)
.label("Word Wrap") .label("Word Wrap")
.on_toggle(Message::WordWrapToggled), .on_toggle(Message::WordWrapToggled),
@ -184,7 +184,7 @@ impl Editor {
} else { } else {
String::from("New file") String::from("New file")
}), }),
space_x(), space::horizontal(),
text({ text({
let (line, column) = self.content.cursor_position(); let (line, column) = self.content.cursor_position();

View file

@ -15,7 +15,7 @@ pub struct Image {
} }
impl Image { impl Image {
pub const LIMIT: usize = 99; pub const LIMIT: usize = 96;
pub async fn list() -> Result<Vec<Self>, Error> { pub async fn list() -> Result<Vec<Self>, Error> {
let client = reqwest::Client::new(); let client = reqwest::Client::new();

View file

@ -10,7 +10,7 @@ use iced::animation;
use iced::time::{Instant, milliseconds}; use iced::time::{Instant, milliseconds};
use iced::widget::{ use iced::widget::{
button, container, float, grid, image, mouse_area, opaque, scrollable, button, container, float, grid, image, mouse_area, opaque, scrollable,
sensor, space_x, stack, sensor, space, stack,
}; };
use iced::window; use iced::window;
use iced::{ use iced::{
@ -227,7 +227,7 @@ fn card<'a>(
}) })
.into() .into()
} else { } else {
space_x().into() space::horizontal().into()
}; };
if let Some(blurhash) = preview.blurhash(now) { if let Some(blurhash) = preview.blurhash(now) {
@ -241,7 +241,7 @@ fn card<'a>(
thumbnail thumbnail
} }
} else { } else {
space_x().into() space::horizontal().into()
}; };
let card = mouse_area(container(image).style(container::dark)) let card = mouse_area(container(image).style(container::dark))
@ -264,7 +264,7 @@ fn card<'a>(
} }
fn placeholder<'a>() -> Element<'a, Message> { fn placeholder<'a>() -> Element<'a, Message> {
container(space_x()).style(container::dark).into() container(space()).style(container::dark).into()
} }
enum Preview { enum Preview {
@ -415,35 +415,32 @@ impl Viewer {
|| self.image_fade_in.is_animating(now) || self.image_fade_in.is_animating(now)
} }
fn view(&self, now: Instant) -> Element<'_, Message> { fn view(&self, now: Instant) -> Option<Element<'_, Message>> {
let opacity = self.background_fade_in.interpolate(0.0, 0.8, now); let opacity = self.background_fade_in.interpolate(0.0, 0.8, now);
let image: Element<'_, _> = if let Some(handle) = &self.image { if opacity <= 0.0 {
return None;
}
let image = self.image.as_ref().map(|handle| {
image(handle) image(handle)
.width(Fill) .width(Fill)
.height(Fill) .height(Fill)
.opacity(self.image_fade_in.interpolate(0.0, 1.0, now)) .opacity(self.image_fade_in.interpolate(0.0, 1.0, now))
.scale(self.image_fade_in.interpolate(1.5, 1.0, now)) .scale(self.image_fade_in.interpolate(1.5, 1.0, now))
.into() });
} else {
space_x().into()
};
if opacity > 0.0 { Some(opaque(
opaque( mouse_area(
mouse_area( container(image)
container(image) .center(Fill)
.center(Fill) .style(move |_theme| {
.style(move |_theme| { container::Style::default()
container::Style::default() .background(color!(0x000000, opacity))
.background(color!(0x000000, opacity)) })
}) .padding(20),
.padding(20),
)
.on_press(Message::Close),
) )
} else { .on_press(Message::Close),
space_x().into() ))
}
} }
} }

View file

@ -1,6 +1,6 @@
use iced::gradient; use iced::gradient;
use iced::theme; use iced::theme;
use iced::widget::{checkbox, column, container, row, slider, space_x, text}; use iced::widget::{checkbox, column, container, row, slider, space, text};
use iced::{Center, Color, Element, Fill, Radians, Theme, color}; use iced::{Center, Color, Element, Fill, Radians, Theme, color};
pub fn main() -> iced::Result { pub fn main() -> iced::Result {
@ -57,7 +57,7 @@ impl Gradient {
transparent, transparent,
} = *self; } = *self;
let gradient_box = container(space_x()) let gradient_box = container(space())
.style(move |_theme| { .style(move |_theme| {
let gradient = gradient::Linear::new(angle) let gradient = gradient::Linear::new(angle)
.add_stop(0.0, start) .add_stop(0.0, start)

View file

@ -3,7 +3,7 @@ use iced::keyboard;
use iced::mouse; use iced::mouse;
use iced::widget::{ use iced::widget::{
button, canvas, center, center_y, checkbox, column, container, pick_list, button, canvas, center, center_y, checkbox, column, container, pick_list,
pin, row, rule, scrollable, space_x, stack, text, pin, row, rule, scrollable, space, stack, text,
}; };
use iced::{ use iced::{
Center, Element, Fill, Font, Length, Point, Rectangle, Renderer, Shrink, Center, Element, Fill, Font, Length, Point, Rectangle, Renderer, Shrink,
@ -70,7 +70,7 @@ impl Layout {
fn view(&self) -> Element<'_, Message> { fn view(&self) -> Element<'_, Message> {
let header = row![ let header = row![
text(self.example.title).size(20).font(Font::MONOSPACE), text(self.example.title).size(20).font(Font::MONOSPACE),
space_x(), space::horizontal(),
checkbox("Explain", self.explain) checkbox("Explain", self.explain)
.on_toggle(Message::ExplainToggled), .on_toggle(Message::ExplainToggled),
pick_list(Theme::ALL, self.theme.as_ref(), Message::ThemeSelected) pick_list(Theme::ALL, self.theme.as_ref(), Message::ThemeSelected)
@ -92,23 +92,19 @@ impl Layout {
}) })
.padding(4); .padding(4);
let controls = row([ let controls = row![
(!self.example.is_first()).then_some( (!self.example.is_first()).then_some(
button(text("← Previous")) button(text("← Previous"))
.padding([5, 10]) .padding([5, 10])
.on_press(Message::Previous) .on_press(Message::Previous)
.into(),
), ),
Some(space_x().into()), space::horizontal(),
(!self.example.is_last()).then_some( (!self.example.is_last()).then_some(
button(text("Next →")) button(text("Next →"))
.padding([5, 10]) .padding([5, 10])
.on_press(Message::Next) .on_press(Message::Next)
.into(),
), ),
] ];
.into_iter()
.flatten());
column![header, example, controls] column![header, example, controls]
.spacing(10) .spacing(10)
@ -143,7 +139,7 @@ impl Example {
}, },
Self { Self {
title: "Space", title: "Space",
view: space, view: space_,
}, },
Self { Self {
title: "Application", title: "Application",
@ -237,15 +233,21 @@ fn row_<'a>() -> Element<'a, Message> {
.into() .into()
} }
fn space<'a>() -> Element<'a, Message> { fn space_<'a>() -> Element<'a, Message> {
row!["Left!", space_x(), "Right!"].into() row!["Left!", space::horizontal(), "Right!"].into()
} }
fn application<'a>() -> Element<'a, Message> { fn application<'a>() -> Element<'a, Message> {
let header = container( let header = container(
row![square(40), space_x(), "Header!", space_x(), square(40),] row![
.padding(10) square(40),
.align_y(Center), space::horizontal(),
"Header!",
space::horizontal(),
square(40),
]
.padding(10)
.align_y(Center),
) )
.style(|theme| { .style(|theme| {
let palette = theme.extended_palette(); let palette = theme.extended_palette();

View file

@ -1,5 +1,5 @@
use iced::widget::{ use iced::widget::{
button, column, lazy, pick_list, row, scrollable, space_x, text, text_input, button, column, lazy, pick_list, row, scrollable, space, text, text_input,
}; };
use iced::{Element, Fill}; use iced::{Element, Fill};
@ -173,7 +173,7 @@ impl App {
row![ row![
text(item.name.clone()).color(item.color), text(item.name.clone()).color(item.color),
space_x(), space::horizontal(),
pick_list(Color::ALL, Some(item.color), move |color| { pick_list(Color::ALL, Some(item.color), move |color| {
Message::ItemColorChanged(item.clone(), color) Message::ItemColorChanged(item.clone(), color)
}), }),

View file

@ -6,7 +6,7 @@ use iced::highlighter;
use iced::time::{self, Instant, milliseconds}; use iced::time::{self, Instant, milliseconds};
use iced::widget::{ use iced::widget::{
button, center_x, container, hover, image, markdown, operation, right, row, button, center_x, container, hover, image, markdown, operation, right, row,
scrollable, sensor, space_x, text_editor, toggler, scrollable, sensor, space, text_editor, toggler,
}; };
use iced::window; use iced::window;
use iced::{ use iced::{
@ -264,7 +264,7 @@ impl<'a> markdown::Viewer<'a, Message> for CustomViewer<'a> {
) )
.into() .into()
} else { } else {
sensor(space_x()) sensor(space())
.key_ref(url.as_str()) .key_ref(url.as_str())
.delay(milliseconds(500)) .delay(milliseconds(500))
.on_show(|_size| Message::ImageShown(url.clone())) .on_show(|_size| Message::ImageShown(url.clone()))

View file

@ -3,7 +3,7 @@ use iced::keyboard;
use iced::keyboard::key; use iced::keyboard::key;
use iced::widget::{ use iced::widget::{
button, center, column, container, mouse_area, opaque, operation, button, center, column, container, mouse_area, opaque, operation,
pick_list, row, space_x, stack, text, text_input, pick_list, row, space, stack, text, text_input,
}; };
use iced::{Bottom, Color, Element, Fill, Subscription, Task}; use iced::{Bottom, Color, Element, Fill, Subscription, Task};
@ -95,12 +95,16 @@ impl App {
fn view(&self) -> Element<'_, Message> { fn view(&self) -> Element<'_, Message> {
let content = container( let content = container(
column![ column![
row![text("Top Left"), space_x(), text("Top Right")] row![text("Top Left"), space::horizontal(), text("Top Right")]
.height(Fill), .height(Fill),
center(button(text("Show Modal")).on_press(Message::ShowModal)), center(button(text("Show Modal")).on_press(Message::ShowModal)),
row![text("Bottom Left"), space_x(), text("Bottom Right")] row![
.align_y(Bottom) text("Bottom Left"),
.height(Fill), space::horizontal(),
text("Bottom Right")
]
.align_y(Bottom)
.height(Fill),
] ]
.height(Fill), .height(Fill),
) )

View file

@ -1,6 +1,6 @@
use iced::widget::{ use iced::widget::{
button, center, center_x, column, container, operation, scrollable, button, center, center_x, column, container, operation, scrollable, space,
space_x, text, text_input, text, text_input,
}; };
use iced::window; use iced::window;
use iced::{ use iced::{
@ -134,7 +134,7 @@ impl Example {
if let Some(window) = self.windows.get(&window_id) { if let Some(window) = self.windows.get(&window_id) {
center(window.view(window_id)).into() center(window.view(window_id)).into()
} else { } else {
space_x().into() space().into()
} }
} }

View file

@ -1,4 +1,4 @@
use iced::widget::{column, pick_list, scrollable, space_y}; use iced::widget::{column, pick_list, scrollable, space};
use iced::{Center, Element, Fill}; use iced::{Center, Element, Fill};
pub fn main() -> iced::Result { pub fn main() -> iced::Result {
@ -33,10 +33,10 @@ impl Example {
.placeholder("Choose a language..."); .placeholder("Choose a language...");
let content = column![ let content = column![
space_y().height(600), space().height(600),
"Which is your favorite language?", "Which is your favorite language?",
pick_list, pick_list,
space_y().height(600), space().height(600),
] ]
.width(Fill) .width(Fill)
.align_x(Center) .align_x(Center)

View file

@ -1,6 +1,6 @@
use iced::widget::{ use iced::widget::{
button, column, container, operation, progress_bar, radio, row, scrollable, button, column, container, operation, progress_bar, radio, row, scrollable,
slider, space_x, space_y, text, slider, space, text,
}; };
use iced::{Border, Center, Color, Element, Fill, Task, Theme}; use iced::{Border, Center, Color, Element, Fill, Task, Theme};
@ -190,9 +190,9 @@ impl ScrollableDemo {
column![ column![
scroll_to_end_button(), scroll_to_end_button(),
text("Beginning!"), text("Beginning!"),
space_y().height(1200), space().height(1200),
text("Middle!"), text("Middle!"),
space_y().height(1200), space().height(1200),
text("End!"), text("End!"),
scroll_to_beginning_button(), scroll_to_beginning_button(),
] ]
@ -215,9 +215,9 @@ impl ScrollableDemo {
row![ row![
scroll_to_end_button(), scroll_to_end_button(),
text("Beginning!"), text("Beginning!"),
space_x().width(1200), space().width(1200),
text("Middle!"), text("Middle!"),
space_x().width(1200), space().width(1200),
text("End!"), text("End!"),
scroll_to_beginning_button(), scroll_to_beginning_button(),
] ]
@ -242,25 +242,25 @@ impl ScrollableDemo {
row![ row![
column![ column![
text("Let's do some scrolling!"), text("Let's do some scrolling!"),
space_y().height(2400) space().height(2400)
], ],
scroll_to_end_button(), scroll_to_end_button(),
text("Horizontal - Beginning!"), text("Horizontal - Beginning!"),
space_x().width(1200), space().width(1200),
//vertical content //vertical content
column![ column![
text("Horizontal - Middle!"), text("Horizontal - Middle!"),
scroll_to_end_button(), scroll_to_end_button(),
text("Vertical - Beginning!"), text("Vertical - Beginning!"),
space_y().height(1200), space().height(1200),
text("Vertical - Middle!"), text("Vertical - Middle!"),
space_y().height(1200), space().height(1200),
text("Vertical - End!"), text("Vertical - End!"),
scroll_to_beginning_button(), scroll_to_beginning_button(),
space_y().height(40), space().height(40),
] ]
.spacing(40), .spacing(40),
space_x().width(1200), space().width(1200),
text("Horizontal - End!"), text("Horizontal - End!"),
scroll_to_beginning_button(), scroll_to_beginning_button(),
] ]

View file

@ -1,7 +1,7 @@
use iced::keyboard; use iced::keyboard;
use iced::widget::{ use iced::widget::{
button, center_x, center_y, checkbox, column, container, pick_list, button, center_x, center_y, checkbox, column, container, pick_list,
progress_bar, row, rule, scrollable, slider, space_y, text, text_input, progress_bar, row, rule, scrollable, slider, space, text, text_input,
toggler, toggler,
}; };
use iced::{Center, Element, Fill, Shrink, Subscription, Theme}; use iced::{Center, Element, Fill, Shrink, Subscription, Theme};
@ -127,7 +127,7 @@ impl Styling {
let scroll_me = scrollable(column![ let scroll_me = scrollable(column![
"Scroll me!", "Scroll me!",
space_y().height(800), space().height(800),
"You did it!" "You did it!"
]) ])
.width(Fill) .width(Fill)

View file

@ -171,7 +171,7 @@ mod toast {
use iced::mouse; use iced::mouse;
use iced::theme; use iced::theme;
use iced::time::{self, Duration, Instant}; use iced::time::{self, Duration, Instant};
use iced::widget::{button, column, container, row, rule, space_x, text}; use iced::widget::{button, column, container, row, rule, space, text};
use iced::window; use iced::window;
use iced::{ use iced::{
Alignment, Center, Element, Event, Fill, Length, Point, Rectangle, Alignment, Center, Element, Event, Fill, Length, Point, Rectangle,
@ -237,7 +237,7 @@ mod toast {
container( container(
row![ row![
text(toast.title.as_str()), text(toast.title.as_str()),
space_x(), space::horizontal(),
button("X") button("X")
.on_press((on_close)(index)) .on_press((on_close)(index))
.padding(3), .padding(3),

View file

@ -1,7 +1,7 @@
use iced::widget::{Button, Column, Container, Slider}; use iced::widget::{Button, Column, Container, Slider};
use iced::widget::{ use iced::widget::{
button, center_x, center_y, checkbox, column, image, radio, rich_text, row, button, center_x, center_y, checkbox, column, image, radio, rich_text, row,
scrollable, slider, space_x, space_y, span, text, text_input, toggler, scrollable, slider, space, span, text, text_input, toggler,
}; };
use iced::{Center, Color, Element, Fill, Font, Pixels, color}; use iced::{Center, Color, Element, Fill, Font, Pixels, color};
@ -146,7 +146,7 @@ impl Tour {
.on_press(Message::BackPressed) .on_press(Message::BackPressed)
.style(button::secondary) .style(button::secondary)
}), }),
space_x(), space::horizontal(),
self.can_continue().then(|| { self.can_continue().then(|| {
padded_button("Next").on_press(Message::NextPressed) padded_button("Next").on_press(Message::NextPressed)
}) })
@ -405,14 +405,14 @@ impl Tour {
text("Tip: You can use the scrollbar to scroll down faster!") text("Tip: You can use the scrollbar to scroll down faster!")
.size(16), .size(16),
) )
.push(space_y().height(4096)) .push(space().height(4096))
.push( .push(
text("You are halfway there!") text("You are halfway there!")
.width(Fill) .width(Fill)
.size(30) .size(30)
.align_x(Center), .align_x(Center),
) )
.push(space_y().height(4096)) .push(space().height(4096))
.push(ferris(300, image::FilterMethod::Linear)) .push(ferris(300, image::FilterMethod::Linear))
.push(text("You made it!").width(Fill).size(50).align_x(Center)) .push(text("You made it!").width(Fill).size(50).align_x(Center))
} }

View file

@ -1,6 +1,6 @@
use iced::alignment; use iced::alignment;
use iced::mouse; use iced::mouse;
use iced::widget::{canvas, checkbox, column, row, slider, space_x, text}; use iced::widget::{canvas, checkbox, column, row, slider, space, text};
use iced::{Center, Element, Fill, Point, Rectangle, Renderer, Theme, Vector}; use iced::{Center, Element, Fill, Point, Rectangle, Renderer, Theme, Vector};
pub fn main() -> iced::Result { pub fn main() -> iced::Result {
@ -49,7 +49,7 @@ impl VectorialText {
fn view(&self) -> Element<'_, Message> { fn view(&self) -> Element<'_, Message> {
let slider_with_label = |label, range, value, message: fn(f32) -> _| { let slider_with_label = |label, range, value, message: fn(f32) -> _| {
column![ column![
row![text(label), space_x(), text!("{:.2}", value)], row![text(label), space::horizontal(), text!("{:.2}", value)],
slider(range, value, message).step(0.01) slider(range, value, message).step(0.01)
] ]
.spacing(2) .spacing(2)

View file

@ -1,7 +1,7 @@
use iced::event::{self, Event}; use iced::event::{self, Event};
use iced::mouse; use iced::mouse;
use iced::widget::{ use iced::widget::{
self, column, container, row, scrollable, selector, space_x, space_y, text, self, column, container, row, scrollable, selector, space, text,
}; };
use iced::window; use iced::window;
use iced::{ use iced::{
@ -63,7 +63,7 @@ impl Example {
let data_row = |label, value, color| { let data_row = |label, value, color| {
row![ row![
text(label), text(label),
space_x(), space::horizontal(),
text(value) text(value)
.font(Font::MONOSPACE) .font(Font::MONOSPACE)
.size(14) .size(14)
@ -111,21 +111,21 @@ impl Example {
scrollable( scrollable(
column![ column![
text("Scroll me!"), text("Scroll me!"),
space_y().height(400), space().height(400),
container(text("I am the outer container!")) container(text("I am the outer container!"))
.id(OUTER_CONTAINER) .id(OUTER_CONTAINER)
.padding(40) .padding(40)
.style(container::rounded_box), .style(container::rounded_box),
space_y().height(400), space().height(400),
scrollable( scrollable(
column![ column![
text("Scroll me!"), text("Scroll me!"),
space_y().height(400), space().height(400),
container(text("I am the inner container!")) container(text("I am the inner container!"))
.id(INNER_CONTAINER) .id(INNER_CONTAINER)
.padding(40) .padding(40)
.style(container::rounded_box), .style(container::rounded_box),
space_y().height(400), space().height(400),
] ]
.padding(20) .padding(20)
) )

View file

@ -28,7 +28,7 @@ use crate::test::instruction;
use crate::test::{Emulator, Ice, Instruction}; use crate::test::{Emulator, Ice, Instruction};
use crate::widget::{ use crate::widget::{
button, center, column, combo_box, container, pick_list, row, rule, button, center, column, combo_box, container, pick_list, row, rule,
scrollable, space_x, text, text_editor, text_input, themer, scrollable, space, text, text_editor, text_input, themer,
}; };
/// Attaches a [`Tester`] to the given [`Program`]. /// Attaches a [`Tester`] to the given [`Program`].
@ -564,7 +564,7 @@ impl<P: Program + 'static> Tester<P> {
let viewport = container( let viewport = container(
scrollable( scrollable(
container(match &self.state { container(match &self.state {
State::Empty => Element::from(space_x()), State::Empty => Element::from(space()),
State::Idle { state } => { State::Idle { state } => {
let theme = program.theme(state, window); let theme = program.theme(state, window);
@ -795,7 +795,7 @@ impl<P: Program + 'static> Tester<P> {
}; };
let edit = if self.is_busy() { let edit = if self.is_busy() {
Element::from(space_x()) Element::from(space::horizontal())
} else if self.edit.is_none() { } else if self.edit.is_none() {
button(icon::pencil().size(14)) button(icon::pencil().size(14))
.padding(0) .padding(0)
@ -849,7 +849,7 @@ where
column![ column![
row![ row![
text(fragment).size(14).font(Font::MONOSPACE), text(fragment).size(14).font(Font::MONOSPACE),
space_x(), space::horizontal(),
control.into() control.into()
] ]
.spacing(5) .spacing(5)

View file

@ -1017,7 +1017,7 @@ where
/// # mod iced { pub mod widget { pub use iced_widget::*; } } /// # mod iced { pub mod widget { pub use iced_widget::*; } }
/// # pub type State = (); /// # pub type State = ();
/// # pub type Element<'a, Message> = iced_widget::core::Element<'a, Message, iced_widget::Theme, iced_widget::Renderer>; /// # pub type Element<'a, Message> = iced_widget::core::Element<'a, Message, iced_widget::Theme, iced_widget::Renderer>;
/// use iced::widget::{column, scrollable, space_y}; /// use iced::widget::{column, scrollable, space};
/// ///
/// enum Message { /// enum Message {
/// // ... /// // ...
@ -1026,7 +1026,7 @@ where
/// fn view(state: &State) -> Element<'_, Message> { /// fn view(state: &State) -> Element<'_, Message> {
/// scrollable(column![ /// scrollable(column![
/// "Scroll me!", /// "Scroll me!",
/// space_y().height(3000), /// space().height(3000),
/// "You did it!", /// "You did it!",
/// ]).into() /// ]).into()
/// } /// }
@ -1729,20 +1729,12 @@ where
ComboBox::new(state, placeholder, selection, on_selected) ComboBox::new(state, placeholder, selection, on_selected)
} }
/// Creates a new [`Space`] widget that fills the available /// Creates some empty [`Space`] with no size.
/// horizontal space.
/// ///
/// This can be useful to separate widgets in a [`Row`]. /// This is considered the "identity" widget. It will take
pub fn space_x() -> Space { /// no space and do nothing.
Space::with_width(Length::Fill) pub fn space() -> Space {
} Space::new()
/// Creates a new [`Space`] widget that fills the available
/// vertical space.
///
/// This can be useful to separate widgets in a [`Column`].
pub fn space_y() -> Space {
Space::with_height(Length::Fill)
} }
/// Creates a horizontal [`Rule`] with the given height. /// Creates a horizontal [`Rule`] with the given height.

View file

@ -14,7 +14,6 @@ mod column;
mod mouse_area; mod mouse_area;
mod pin; mod pin;
mod responsive; mod responsive;
mod space;
mod stack; mod stack;
mod themer; mod themer;
@ -35,6 +34,7 @@ pub mod rule;
pub mod scrollable; pub mod scrollable;
pub mod sensor; pub mod sensor;
pub mod slider; pub mod slider;
pub mod space;
pub mod table; pub mod table;
pub mod text; pub mod text;
pub mod text_editor; pub mod text_editor;

View file

@ -8,7 +8,7 @@ use crate::core::{
self, Clipboard, Element, Event, Length, Rectangle, Shell, Size, Vector, self, Clipboard, Element, Event, Length, Rectangle, Shell, Size, Vector,
Widget, Widget,
}; };
use crate::space_x; use crate::space;
/// A widget that is aware of its dimensions. /// A widget that is aware of its dimensions.
/// ///
@ -43,7 +43,7 @@ where
view: Box::new(view), view: Box::new(view),
width: Length::Fill, width: Length::Fill,
height: Length::Fill, height: Length::Fill,
content: Element::new(space_x().width(0)), content: Element::new(space()),
} }
} }

View file

@ -5,7 +5,7 @@
//! # mod iced { pub mod widget { pub use iced_widget::*; } } //! # mod iced { pub mod widget { pub use iced_widget::*; } }
//! # pub type State = (); //! # pub type State = ();
//! # pub type Element<'a, Message> = iced_widget::core::Element<'a, Message, iced_widget::Theme, iced_widget::Renderer>; //! # pub type Element<'a, Message> = iced_widget::core::Element<'a, Message, iced_widget::Theme, iced_widget::Renderer>;
//! use iced::widget::{column, scrollable, space_y}; //! use iced::widget::{column, scrollable, space};
//! //!
//! enum Message { //! enum Message {
//! // ... //! // ...
@ -14,7 +14,7 @@
//! fn view(state: &State) -> Element<'_, Message> { //! fn view(state: &State) -> Element<'_, Message> {
//! scrollable(column![ //! scrollable(column![
//! "Scroll me!", //! "Scroll me!",
//! space_y().height(3000), //! space().height(3000),
//! "You did it!", //! "You did it!",
//! ]).into() //! ]).into()
//! } //! }
@ -48,7 +48,7 @@ pub use operation::scrollable::{AbsoluteOffset, RelativeOffset};
/// # mod iced { pub mod widget { pub use iced_widget::*; } } /// # mod iced { pub mod widget { pub use iced_widget::*; } }
/// # pub type State = (); /// # pub type State = ();
/// # pub type Element<'a, Message> = iced_widget::core::Element<'a, Message, iced_widget::Theme, iced_widget::Renderer>; /// # pub type Element<'a, Message> = iced_widget::core::Element<'a, Message, iced_widget::Theme, iced_widget::Renderer>;
/// use iced::widget::{column, scrollable, space_y}; /// use iced::widget::{column, scrollable, space};
/// ///
/// enum Message { /// enum Message {
/// // ... /// // ...
@ -57,7 +57,7 @@ pub use operation::scrollable::{AbsoluteOffset, RelativeOffset};
/// fn view(state: &State) -> Element<'_, Message> { /// fn view(state: &State) -> Element<'_, Message> {
/// scrollable(column![ /// scrollable(column![
/// "Scroll me!", /// "Scroll me!",
/// space_y().height(3000), /// space().height(3000),
/// "You did it!", /// "You did it!",
/// ]).into() /// ]).into()
/// } /// }

View file

@ -1,4 +1,4 @@
//! Distribute content vertically. //! Add some explicit spacing between elements.
use crate::core; use crate::core;
use crate::core::layout; use crate::core::layout;
use crate::core::mouse; use crate::core::mouse;
@ -6,6 +6,22 @@ use crate::core::renderer;
use crate::core::widget::Tree; use crate::core::widget::Tree;
use crate::core::{Element, Layout, Length, Rectangle, Size, Widget}; use crate::core::{Element, Layout, Length, Rectangle, Size, Widget};
/// Creates a new [`Space`] widget that fills the available
/// horizontal space.
///
/// This can be useful to separate widgets in a [`Row`](crate::Row).
pub fn horizontal() -> Space {
Space::new().width(Length::Fill)
}
/// Creates a new [`Space`] widget that fills the available
/// vertical space.
///
/// This can be useful to separate widgets in a [`Column`](crate::Column).
pub fn vertical() -> Space {
Space::new().height(Length::Fill)
}
/// An amount of empty space. /// An amount of empty space.
/// ///
/// It can be useful if you want to fill some space with nothing. /// It can be useful if you want to fill some space with nothing.
@ -16,27 +32,11 @@ pub struct Space {
} }
impl Space { impl Space {
/// Creates an amount of empty [`Space`] with the given width and height. /// Creates some empty [`Space`] with no size.
pub fn new(width: impl Into<Length>, height: impl Into<Length>) -> Self { pub fn new() -> Self {
Space {
width: width.into(),
height: height.into(),
}
}
/// Creates an amount of horizontal [`Space`].
pub fn with_width(width: impl Into<Length>) -> Self {
Space {
width: width.into(),
height: Length::Shrink,
}
}
/// Creates an amount of vertical [`Space`].
pub fn with_height(height: impl Into<Length>) -> Self {
Space { Space {
width: Length::Shrink, width: Length::Shrink,
height: height.into(), height: Length::Shrink,
} }
} }
@ -53,6 +53,12 @@ impl Space {
} }
} }
impl Default for Space {
fn default() -> Self {
Space::new()
}
}
impl<Message, Theme, Renderer> Widget<Message, Theme, Renderer> for Space impl<Message, Theme, Renderer> Widget<Message, Theme, Renderer> for Space
where where
Renderer: core::Renderer, Renderer: core::Renderer,