summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPolesznyák Márk <contact@pml68.dev>2025-11-16 00:57:47 +0100
committerPolesznyák Márk <contact@pml68.dev>2025-11-16 00:57:47 +0100
commit72d43134bebe284a11b6d3d918f40a217480cece (patch)
tree1903c6f6a3a8505672a0a755e252a7306ac95826
parentfeat: add `Grid` as a usable widget (diff)
downloadiced-builder-72d43134bebe284a11b6d3d918f40a217480cece.tar.gz
feat: dynamically sized widget tree in designer view, grid fixes
-rw-r--r--src/options.rs2
-rw-r--r--src/panes/designer_view.rs30
-rwxr-xr-xsrc/types/rendered_element.rs10
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),
)