summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs7
1 files changed, 6 insertions, 1 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);
}