diff --git a/editor/src/messages/input_mapper/input_mappings.rs b/editor/src/messages/input_mapper/input_mappings.rs index 9e774b6c25..cd48e339da 100644 --- a/editor/src/messages/input_mapper/input_mappings.rs +++ b/editor/src/messages/input_mapper/input_mappings.rs @@ -165,6 +165,7 @@ pub fn input_mappings() -> Mapping { entry!(KeyUp(MouseLeft); action_dispatch=TextToolMessage::DragStop), entry!(KeyDown(MouseRight); action_dispatch=TextToolMessage::Abort), entry!(KeyDown(Escape); action_dispatch=TextToolMessage::Abort), + entry!(KeyDown(Enter); action_dispatch=TextToolMessage::BeginEditing), entry!(KeyDown(Enter); modifiers=[Accel], action_dispatch=TextToolMessage::Abort), // // GradientToolMessage diff --git a/editor/src/messages/tool/tool_messages/text_tool.rs b/editor/src/messages/tool/tool_messages/text_tool.rs index 49a7bdfd5f..9a867aad29 100644 --- a/editor/src/messages/tool/tool_messages/text_tool.rs +++ b/editor/src/messages/tool/tool_messages/text_tool.rs @@ -66,6 +66,7 @@ pub enum TextToolMessage { DragStart, DragStop, EditSelected, + BeginEditing, Interact, PointerMove { center: Key, lock_ratio: Key }, PointerOutsideViewport { center: Key, lock_ratio: Key }, @@ -307,6 +308,7 @@ impl<'a> MessageHandler> for Text match self.fsm_state { TextToolFsmState::Ready => actions!(TextToolMessageDiscriminant; DragStart, + BeginEditing, PointerOutsideViewport, PointerMove, ), @@ -652,6 +654,14 @@ impl Fsm for TextToolFsmState { state } + (TextToolFsmState::Ready, TextToolMessage::BeginEditing) => { + if let Some(layer) = can_edit_selected(document) { + tool_data.start_editing_layer(layer, TextToolFsmState::Ready, document, font_cache, responses); + return TextToolFsmState::Editing; + } + + TextToolFsmState::Ready + } (TextToolFsmState::Ready, TextToolMessage::DragStart) => { tool_data.resize.start(document, input, viewport); tool_data.cached_resize_bounds = [tool_data.resize.viewport_drag_start(document); 2]; diff --git a/frontend/src/components/panels/Document.svelte b/frontend/src/components/panels/Document.svelte index 18f5f5d74e..46e8e2e9db 100644 --- a/frontend/src/components/panels/Document.svelte +++ b/frontend/src/components/panels/Document.svelte @@ -374,6 +374,7 @@ const range = window.document.createRange(); range.selectNodeContents(textInput); + range.collapse(false); const selection = window.getSelection(); if (selection) {