mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-26 07:58:11 +08:00
Fix undo/redo history related issues with the Path tool (#3111)
* Fix transactions * A little cleanup * Fix bug in delete * Code review --------- Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
co-authored by
Keavon Chambers
parent
9a32e79853
commit
09ece9424d
@@ -2611,17 +2611,15 @@ impl Fsm for PathToolFsmState {
|
||||
// Delete key
|
||||
(_, PathToolMessage::Delete) => {
|
||||
// Delete the selected points and clean up overlays
|
||||
responses.add(DocumentMessage::AddTransaction);
|
||||
let point_mode = tool_options.path_editing_mode.point_editing_mode;
|
||||
let segment_mode = tool_options.path_editing_mode.segment_editing_mode;
|
||||
|
||||
let only_segment_mode = segment_mode && !point_mode;
|
||||
|
||||
shape_editor.delete_selected_segments(document, responses);
|
||||
let transaction_started = shape_editor.delete_selected_segments(document, responses, true);
|
||||
if only_segment_mode {
|
||||
shape_editor.delete_hanging_selected_anchors(document, responses);
|
||||
shape_editor.delete_hanging_selected_anchors(document, responses, !transaction_started);
|
||||
} else {
|
||||
shape_editor.delete_selected_points(document, responses);
|
||||
shape_editor.delete_selected_points(document, responses, !transaction_started);
|
||||
}
|
||||
responses.add(PathToolMessage::SelectionChanged);
|
||||
|
||||
@@ -2841,8 +2839,8 @@ impl Fsm for PathToolFsmState {
|
||||
}
|
||||
(_, PathToolMessage::DeleteSelected) => {
|
||||
// Delete the selected points and segments
|
||||
shape_editor.delete_point_and_break_path(document, responses);
|
||||
shape_editor.delete_selected_segments(document, responses);
|
||||
let deleted_some_point = shape_editor.delete_point_and_break_path(document, responses);
|
||||
shape_editor.delete_selected_segments(document, responses, !deleted_some_point);
|
||||
|
||||
PathToolFsmState::Ready
|
||||
}
|
||||
|
||||
@@ -599,7 +599,7 @@ impl PenToolData {
|
||||
self.g1_continuous = true;
|
||||
let document = snap_data.document;
|
||||
self.next_handle_start = self.next_point;
|
||||
let vector = document.network_interface.compute_modified_vector(layer).unwrap();
|
||||
let Some(vector) = document.network_interface.compute_modified_vector(layer) else { return };
|
||||
self.update_handle_type(TargetHandle::FuturePreviewOutHandle);
|
||||
self.handle_mode = HandleMode::ColinearLocked;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user