Fix regression where Pen tool resumes segment placement after returning from another tool (#2234)

Fix penfsm not clearing resources and returing to ready when aborting

Fixes https://discord.com/channels/731730685944922173/1332187131623506095/1333775276160585788.
This commit is contained in:
mTvare 2025-01-29 17:09:28 +05:30 committed by GitHub
parent eb0ff20d3c
commit 95f6bb82ff
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 6 additions and 2 deletions

View File

@ -339,7 +339,6 @@ impl PenToolData {
}, },
}); });
} }
responses.add(DocumentMessage::EndTransaction);
if !close_subpath { if !close_subpath {
self.add_point(LastPoint { self.add_point(LastPoint {
id: end, id: end,
@ -348,6 +347,7 @@ impl PenToolData {
handle_start: next_handle_start, handle_start: next_handle_start,
}); });
} }
responses.add(DocumentMessage::EndTransaction);
Some(if close_subpath { PenToolFsmState::Ready } else { PenToolFsmState::PlacingAnchor }) Some(if close_subpath { PenToolFsmState::Ready } else { PenToolFsmState::PlacingAnchor })
} }
@ -857,10 +857,14 @@ impl Fsm for PenToolFsmState {
} }
(_, PenToolMessage::Abort) => { (_, PenToolMessage::Abort) => {
responses.add(DocumentMessage::AbortTransaction); responses.add(DocumentMessage::AbortTransaction);
tool_data.handle_end = None;
tool_data.latest_points.clear();
tool_data.point_index = 0;
tool_data.snap_manager.cleanup(responses);
responses.add(OverlaysMessage::Draw); responses.add(OverlaysMessage::Draw);
self PenToolFsmState::Ready
} }
(PenToolFsmState::DraggingHandle | PenToolFsmState::PlacingAnchor, PenToolMessage::Undo) => { (PenToolFsmState::DraggingHandle | PenToolFsmState::PlacingAnchor, PenToolMessage::Undo) => {
if tool_data.point_index > 0 { if tool_data.point_index > 0 {