diff --git a/document-legacy/src/document.rs b/document-legacy/src/document.rs index 07f64175..e900aebf 100644 --- a/document-legacy/src/document.rs +++ b/document-legacy/src/document.rs @@ -1098,10 +1098,16 @@ impl Document { // Delete the layer if there are no longer any manipulator groups if (shape.manipulator_groups().len() - 1) == 0 { - self.delete(&layer_path)?; - responses.push(DocumentChanged); - responses.push(DocumentResponse::DeletedLayer { path: layer_path }); - return Ok(Some(responses)); + // Delegate deletion to DeleteLayer to update Layer Tree in frontend + match self.handle_operation(Operation::DeleteLayer { path: layer_path.clone() }, font_cache) { + Ok(Some(delete_responses)) => { + responses.extend(delete_responses); + responses.push(DocumentResponse::DeletedSelectedManipulatorPoints); + return Ok(Some(responses)); + } + Err(e) => error!("DocumentError: {:?}", e), + Ok(_) => {} + } } // If we still have manipulator groups, update the layer and thumbnails diff --git a/document-legacy/src/response.rs b/document-legacy/src/response.rs index 979ddddf..3d1537dd 100644 --- a/document-legacy/src/response.rs +++ b/document-legacy/src/response.rs @@ -21,6 +21,7 @@ pub enum DocumentResponse { LayerChanged { path: Vec, }, + DeletedSelectedManipulatorPoints, } impl fmt::Display for DocumentResponse { @@ -31,6 +32,7 @@ impl fmt::Display for DocumentResponse { DocumentResponse::CreatedLayer { .. } => write!(f, "CreatedLayer"), DocumentResponse::LayerChanged { .. } => write!(f, "LayerChanged"), DocumentResponse::DeletedLayer { .. } => write!(f, "DeleteLayer"), + DocumentResponse::DeletedSelectedManipulatorPoints { .. } => write!(f, "DeletedSelectedManipulatorPoints"), } } } diff --git a/editor/src/messages/portfolio/document/document_message_handler.rs b/editor/src/messages/portfolio/document/document_message_handler.rs index bcea8450..8972484e 100644 --- a/editor/src/messages/portfolio/document/document_message_handler.rs +++ b/editor/src/messages/portfolio/document/document_message_handler.rs @@ -143,6 +143,23 @@ impl MessageHandler responses.push_back(RenderDocument.into()), + DocumentResponse::DeletedSelectedManipulatorPoints => { + // Clear Properties panel after deleting all points by updating backend widget state. + responses.push_back( + LayoutMessage::SendLayout { + layout: Layout::WidgetLayout(WidgetLayout::new(vec![])), + layout_target: LayoutTarget::PropertiesOptions, + } + .into(), + ); + responses.push_back( + LayoutMessage::SendLayout { + layout: Layout::WidgetLayout(WidgetLayout::new(vec![])), + layout_target: LayoutTarget::PropertiesSections, + } + .into(), + ); + } }; responses.push_back(BroadcastEvent::DocumentIsDirty.into()); }