fix(iced): clear selection handle on deselect and Escape
- Deselect handler now clears selection_transform and transform_drag_handle - Escape key (MenuClose) now cancels active transform before closing menus - Ensures selection handles are properly cleaned up when deselecting
This commit is contained in:
@@ -1995,6 +1995,8 @@ impl HcieIcedApp {
|
|||||||
Message::Deselect => {
|
Message::Deselect => {
|
||||||
self.documents[self.active_doc].selection_rect = None;
|
self.documents[self.active_doc].selection_rect = None;
|
||||||
self.documents[self.active_doc].selection_bounds = None;
|
self.documents[self.active_doc].selection_bounds = None;
|
||||||
|
self.documents[self.active_doc].selection_transform = None;
|
||||||
|
self.documents[self.active_doc].transform_drag_handle = TransformHandle::None;
|
||||||
self.documents[self.active_doc].engine.selection_clear();
|
self.documents[self.active_doc].engine.selection_clear();
|
||||||
}
|
}
|
||||||
Message::SelectInverse => {
|
Message::SelectInverse => {
|
||||||
@@ -2535,6 +2537,16 @@ impl HcieIcedApp {
|
|||||||
&& self.documents[self.active_doc].crop_state.active
|
&& self.documents[self.active_doc].crop_state.active
|
||||||
{
|
{
|
||||||
self.documents[self.active_doc].crop_state.cancel();
|
self.documents[self.active_doc].crop_state.cancel();
|
||||||
|
} else if self.documents[self.active_doc].selection_transform.is_some() {
|
||||||
|
// Cancel transform if active
|
||||||
|
let doc = &mut self.documents[self.active_doc];
|
||||||
|
if let Some(original) = doc.transform_original.take() {
|
||||||
|
doc.selection_transform = Some(original);
|
||||||
|
} else {
|
||||||
|
doc.selection_transform = None;
|
||||||
|
}
|
||||||
|
doc.transform_drag_start = None;
|
||||||
|
doc.transform_drag_handle = TransformHandle::None;
|
||||||
} else if self.active_menu.is_some() {
|
} else if self.active_menu.is_some() {
|
||||||
self.active_menu = None;
|
self.active_menu = None;
|
||||||
} else if self.active_dialog != ActiveDialog::None {
|
} else if self.active_dialog != ActiveDialog::None {
|
||||||
|
|||||||
Reference in New Issue
Block a user