From c704d0af0c559be666fdae8b2cc802d6bac56f64 Mon Sep 17 00:00:00 2001 From: Ayush Amawate Date: Mon, 16 Feb 2026 17:55:02 +0530 Subject: [PATCH 1/3] fix Shape tool dropdown resetting to Polygon when switching tools --- editor/src/messages/tool/tool_messages/shape_tool.rs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/editor/src/messages/tool/tool_messages/shape_tool.rs b/editor/src/messages/tool/tool_messages/shape_tool.rs index ab84e99279..b82483230d 100644 --- a/editor/src/messages/tool/tool_messages/shape_tool.rs +++ b/editor/src/messages/tool/tool_messages/shape_tool.rs @@ -1092,13 +1092,8 @@ impl Fsm for ShapeToolFsmState { responses.add(DocumentMessage::AbortTransaction); tool_data.data.cleanup(responses); tool_data.current_shape = shape; - responses.add(ShapeToolMessage::UpdateOptions { - options: ShapeOptionsUpdate::ShapeType(shape), - }); - - responses.add(ShapeToolMessage::UpdateOptions { - options: ShapeOptionsUpdate::ShapeType(shape), - }); + // Update hints for the new shape (without updating options.shape_type) + update_dynamic_hints(&ShapeToolFsmState::Ready(shape), responses, tool_data); ShapeToolFsmState::Ready(shape) } (_, ShapeToolMessage::HideShapeTypeWidget { hide }) => { From ce7302644e3ed8e00fa44c3b93f6b2ec82ed22f1 Mon Sep 17 00:00:00 2001 From: Ayush Amawate Date: Mon, 16 Feb 2026 18:39:49 +0530 Subject: [PATCH 2/3] add sync for rectangle/ellipse and line --- .../src/messages/tool/tool_message_handler.rs | 3 ++- .../messages/tool/tool_messages/shape_tool.rs | 25 ++++++------------- 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/editor/src/messages/tool/tool_message_handler.rs b/editor/src/messages/tool/tool_message_handler.rs index 0a263e1996..03c5ecebf2 100644 --- a/editor/src/messages/tool/tool_message_handler.rs +++ b/editor/src/messages/tool/tool_message_handler.rs @@ -77,7 +77,8 @@ impl MessageHandler> for ToolMessageHandler self.tool_state.tool_data.active_tool_type = ToolType::Shape; } responses.add_front(ToolMessage::ActivateTool { tool_type: ToolType::Shape }); - responses.add(ShapeToolMessage::SetShape { shape: ShapeType::Polygon }); + // Sync current_shape with the dropdown selection (options.shape_type) + responses.add(ShapeToolMessage::SyncShapeWithOptions); responses.add(ShapeToolMessage::HideShapeTypeWidget { hide: false }) } ToolMessage::ActivateToolBrush => responses.add_front(ToolMessage::ActivateTool { tool_type: ToolType::Brush }), diff --git a/editor/src/messages/tool/tool_messages/shape_tool.rs b/editor/src/messages/tool/tool_messages/shape_tool.rs index b82483230d..ec6a7d6933 100644 --- a/editor/src/messages/tool/tool_messages/shape_tool.rs +++ b/editor/src/messages/tool/tool_messages/shape_tool.rs @@ -94,6 +94,7 @@ pub enum ShapeToolMessage { PointerOutsideViewport { modifier: ShapeToolModifierKey }, UpdateOptions { options: ShapeOptionsUpdate }, SetShape { shape: ShapeType }, + SyncShapeWithOptions, IncreaseSides, DecreaseSides, @@ -169,30 +170,12 @@ fn create_shape_option_widget(shape_type: ShapeType) -> WidgetInstance { } .into() }), - MenuListEntry::new("Rectangle").label("Rectangle").on_commit(move |_| { - ShapeToolMessage::UpdateOptions { - options: ShapeOptionsUpdate::ShapeType(ShapeType::Rectangle), - } - .into() - }), - MenuListEntry::new("Ellipse").label("Ellipse").on_commit(move |_| { - ShapeToolMessage::UpdateOptions { - options: ShapeOptionsUpdate::ShapeType(ShapeType::Ellipse), - } - .into() - }), MenuListEntry::new("Arrow").label("Arrow").on_commit(move |_| { ShapeToolMessage::UpdateOptions { options: ShapeOptionsUpdate::ShapeType(ShapeType::Arrow), } .into() }), - MenuListEntry::new("Line").label("Line").on_commit(move |_| { - ShapeToolMessage::UpdateOptions { - options: ShapeOptionsUpdate::ShapeType(ShapeType::Line), - } - .into() - }), ]]; DropdownInput::new(entries).selected_index(Some(shape_type as u32)).widget_instance() } @@ -1096,6 +1079,12 @@ impl Fsm for ShapeToolFsmState { update_dynamic_hints(&ShapeToolFsmState::Ready(shape), responses, tool_data); ShapeToolFsmState::Ready(shape) } + (_, ShapeToolMessage::SyncShapeWithOptions) => { + // Sync current_shape with the dropdown selection when returning from alias tools + tool_data.current_shape = tool_options.shape_type; + update_dynamic_hints(&ShapeToolFsmState::Ready(tool_options.shape_type), responses, tool_data); + ShapeToolFsmState::Ready(tool_options.shape_type) + } (_, ShapeToolMessage::HideShapeTypeWidget { hide }) => { tool_data.hide_shape_option_widget = hide; responses.add(ToolMessage::RefreshToolOptions); From e8148d0a863c02c4fd31b09e217fb8c910a473a0 Mon Sep 17 00:00:00 2001 From: Ayush Amawate Date: Mon, 16 Feb 2026 18:58:46 +0530 Subject: [PATCH 3/3] fix build issues --- editor/src/messages/tool/tool_message_handler.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editor/src/messages/tool/tool_message_handler.rs b/editor/src/messages/tool/tool_message_handler.rs index 03c5ecebf2..29f6022767 100644 --- a/editor/src/messages/tool/tool_message_handler.rs +++ b/editor/src/messages/tool/tool_message_handler.rs @@ -1,5 +1,5 @@ use super::common_functionality::shape_editor::ShapeState; -use super::common_functionality::shapes::shape_utility::ShapeType::{self, Ellipse, Line, Rectangle}; +use super::common_functionality::shapes::shape_utility::ShapeType::{Ellipse, Line, Rectangle}; use super::utility_types::{ToolActionMessageContext, ToolFsmState, tool_message_to_tool_type}; use crate::application::generate_uuid; use crate::messages::layout::utility_types::widget_prelude::*;