diff options
| author | Polesznyák Márk <contact@pml68.dev> | 2025-11-16 00:57:47 +0100 |
|---|---|---|
| committer | Polesznyák Márk <contact@pml68.dev> | 2025-11-16 00:57:47 +0100 |
| commit | 72d43134bebe284a11b6d3d918f40a217480cece (patch) | |
| tree | 1903c6f6a3a8505672a0a755e252a7306ac95826 /src | |
| parent | feat: add `Grid` as a usable widget (diff) | |
| download | iced-builder-72d43134bebe284a11b6d3d918f40a217480cece.tar.gz | |
feat: dynamically sized widget tree in designer view, grid fixes
Diffstat (limited to 'src')
| -rw-r--r-- | src/options.rs | 2 | ||||
| -rw-r--r-- | src/panes/designer_view.rs | 30 | ||||
| -rwxr-xr-x | src/types/rendered_element.rs | 10 |
3 files changed, 21 insertions, 21 deletions
diff --git a/src/options.rs b/src/options.rs index 2ebdd5f..0549b68 100644 --- a/src/options.rs +++ b/src/options.rs @@ -264,7 +264,7 @@ impl<'a, Message> ApplyOptions for Grid<'a, Message> { let mut grid = self; if let Some(spacing) = options.get("spacing").expect("spacing key") { - let spacing = f32::from_str(spacing).unwrap(); + let spacing = Pixels::from_str(spacing).unwrap(); grid = grid.spacing(spacing); } diff --git a/src/panes/designer_view.rs b/src/panes/designer_view.rs index 48a8304..8bed248 100644 --- a/src/panes/designer_view.rs +++ b/src/panes/designer_view.rs @@ -1,7 +1,5 @@ -use iced::Length; -use iced::widget::{ - button, center, container, pane_grid, responsive, text, themer, -}; +use iced::widget::{button, center, container, pane_grid, text, themer}; +use iced::{Fill, Shrink}; use iced_material::Theme; use super::style; @@ -14,25 +12,23 @@ pub fn view<'a>( is_focused: bool, ) -> pane_grid::Content<'a, Message, Theme> { let el_tree: iced::Element<'a, Message> = match element_tree { - Some(tree) => responsive(|size| { - center( - container(tree.clone()) - .style(|theme| { - container::background(theme.palette().background) - }) - .height(size.height * 0.5) - .width(size.height * 0.8), - ) - .into() - }) + Some(tree) => center( + container(tree.clone()) + .style(|theme| { + container::background(theme.palette().background) + }) + .clip(true) + .width(Shrink) + .height(Shrink), + ) .into(), None => center("Open a project or begin creating one").into(), }; let content = container(themer(Some(designer_theme), el_tree)) .id("drop_zone") - .height(Length::Fill) - .width(Length::Fill); + .width(Fill) + .height(Fill); let title_bar = pane_grid::TitleBar::new(text("Designer").center()) .controls(pane_grid::Controls::dynamic( diff --git a/src/types/rendered_element.rs b/src/types/rendered_element.rs index 15e851c..7edb3df 100755 --- a/src/types/rendered_element.rs +++ b/src/types/rendered_element.rs @@ -1,8 +1,8 @@ use std::collections::BTreeMap; use iced::advanced::widget::Id; -use iced::widget::text::IntoFragment; -use iced::{Element, widget}; +use iced::widget::text::{IntoFragment, Wrapping}; +use iced::{Element, Shrink, widget}; use serde::{Deserialize, Serialize}; use crate::Error; @@ -398,7 +398,11 @@ impl<'a> From<RenderedElement> for Element<'a, Message> { if !child_elements.is_empty() { widget::grid(child_elements.into_iter().map(Into::into)) } else { - widget::grid([text("New Column").into()]) + widget::grid([text("New Grid") + .wrapping(Wrapping::None) + .into()]) + .width(70) + .height(Shrink) } .apply_options(copy.options), ) |
