diff --git a/editor/src/messages/input_mapper/default_mapping.rs b/editor/src/messages/input_mapper/default_mapping.rs index bb3ae6d0..ed504c26 100644 --- a/editor/src/messages/input_mapper/default_mapping.rs +++ b/editor/src/messages/input_mapper/default_mapping.rs @@ -302,7 +302,7 @@ pub fn default_mapping() -> Mapping { entry!(KeyDown(KeyJ); modifiers=[Accel], action_dispatch=DocumentMessage::DuplicateSelectedLayers), entry!(KeyDown(KeyG); modifiers=[Accel], action_dispatch=DocumentMessage::GroupSelectedLayers), entry!(KeyDown(KeyG); modifiers=[Accel, Shift], action_dispatch=DocumentMessage::UngroupSelectedLayers), - entry!(KeyDown(KeyN); modifiers=[Accel, Shift], action_dispatch=DocumentMessage::CreateEmptyFolder { parent: LayerNodeIdentifier::ROOT }), + entry!(KeyDown(KeyN); modifiers=[Accel, Shift], action_dispatch=DocumentMessage::CreateEmptyFolder), entry!(KeyDown(Digit0); modifiers=[Accel], action_dispatch=DocumentMessage::ZoomCanvasToFitAll), entry!(KeyDown(Digit1); modifiers=[Accel], action_dispatch=DocumentMessage::ZoomCanvasTo100Percent), entry!(KeyDown(Digit2); modifiers=[Accel], action_dispatch=DocumentMessage::ZoomCanvasTo200Percent), diff --git a/editor/src/messages/portfolio/document/document_message.rs b/editor/src/messages/portfolio/document/document_message.rs index 90646ea3..4b880d6e 100644 --- a/editor/src/messages/portfolio/document/document_message.rs +++ b/editor/src/messages/portfolio/document/document_message.rs @@ -40,9 +40,7 @@ pub enum DocumentMessage { ClearArtboards, ClearLayersPanel, CommitTransaction, - CreateEmptyFolder { - parent: LayerNodeIdentifier, - }, + CreateEmptyFolder, DebugPrintDocument, DeleteLayer { id: NodeId, diff --git a/editor/src/messages/portfolio/document/document_message_handler.rs b/editor/src/messages/portfolio/document/document_message_handler.rs index b8873247..c2e31ac1 100644 --- a/editor/src/messages/portfolio/document/document_message_handler.rs +++ b/editor/src/messages/portfolio/document/document_message_handler.rs @@ -355,14 +355,25 @@ impl MessageHandler> for DocumentMessageHand }); } CommitTransaction => (), - CreateEmptyFolder { parent } => { + CreateEmptyFolder => { let id = NodeId(generate_uuid()); + let parent = self + .metadata() + .deepest_common_ancestor(self.selected_nodes.selected_layers(self.metadata()), true) + .unwrap_or(LayerNodeIdentifier::ROOT); + + let insert_index = parent + .children(self.metadata()) + .enumerate() + .find_map(|(index, item)| self.selected_nodes.selected_layers(self.metadata()).any(|x| x == item).then_some(index as isize)) + .unwrap_or(-1); + responses.add(GraphOperationMessage::NewCustomLayer { id, nodes: HashMap::new(), parent, - insert_index: -1, + insert_index, alias: String::new(), }); responses.add(NodeGraphMessage::SelectedNodesSet { nodes: vec![id] }); @@ -1470,7 +1481,7 @@ impl DocumentMessageHandler { IconButton::new("Folder", 24) .tooltip("New Folder") .tooltip_shortcut(action_keys!(DocumentMessageDiscriminant::CreateEmptyFolder)) - .on_update(|_| DocumentMessage::CreateEmptyFolder { parent: LayerNodeIdentifier::ROOT }.into()) + .on_update(|_| DocumentMessage::CreateEmptyFolder.into()) .widget_holder(), IconButton::new("Trash", 24) .tooltip("Delete Selected")