summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorpml68 <contact@pml68.dev>2025-07-17 03:23:53 +0200
committerpml68 <contact@pml68.dev>2025-07-17 03:23:53 +0200
commitb4e120717875934205b12056ed214217df30b75a (patch)
tree6403a8a2f95a95519761044acf9dee61bc7dcd6a /src
parentfeat: make close-only dialogs closable via `Esc` or clicking the backdrop (diff)
downloadiced-builder-b4e120717875934205b12056ed214217df30b75a.tar.gz
chore: update deps
Diffstat (limited to '')
-rw-r--r--src/main.rs7
-rw-r--r--src/panes/element_list.rs8
-rwxr-xr-xsrc/types/rendered_element.rs1
3 files changed, 12 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs
index 4df5922..aaddf1f 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -231,16 +231,19 @@ impl IcedBuilder {
Message::HandleNew(name, zones) => {
let ids: Vec<Id> = zones.into_iter().map(|z| z.0).collect();
if !ids.is_empty() {
+ self.is_dirty = true;
+
let action = Action::new(
&ids,
self.project.element_tree.as_ref(),
None,
);
+
let result = name.handle_action(
self.project.element_tree.as_mut(),
action,
);
- self.is_dirty = true;
+
match result {
Ok(Some(ref element)) => {
self.project.element_tree = Some(element.clone());
@@ -269,10 +272,12 @@ impl IcedBuilder {
self.project.element_tree.as_ref(),
Some(element.id()),
);
+
let result = element.handle_action(
self.project.element_tree.as_mut(),
action,
);
+
if let Err(error) = result {
self.dialog = Dialog::error(error);
}
diff --git a/src/panes/element_list.rs b/src/panes/element_list.rs
index 5e7d99d..b18c275 100644
--- a/src/panes/element_list.rs
+++ b/src/panes/element_list.rs
@@ -14,9 +14,11 @@ fn items_list_view<'a>() -> Element<'a, Message> {
for item in ElementName::ALL {
column = column.push(
- droppable(text(item.clone().to_string())).on_drop(|point, rect| {
- Message::DropNewElement(item.clone(), point, rect)
- }),
+ droppable(text(item.clone().to_string()))
+ .drag_center(true)
+ .on_drop(|point, rect| {
+ Message::DropNewElement(item.clone(), point, rect)
+ }),
);
}
diff --git a/src/types/rendered_element.rs b/src/types/rendered_element.rs
index be2a004..9f51e7e 100755
--- a/src/types/rendered_element.rs
+++ b/src/types/rendered_element.rs
@@ -392,6 +392,7 @@ impl<'a> From<RenderedElement> for Element<'a, Message> {
iced_drop::droppable(content)
.id(value.id().clone())
.drag_hide(true)
+ .drag_center(true)
.on_drop(move |point, rect| {
Message::MoveElement(value.clone(), point, rect)
})