Revert #1587 and #1597 so the Pen tool no longer handles per-segment history

This commit is contained in:
Keavon Chambers
2026-09-05 17:40:33 -07:00
parent f11e6f3bc6
commit ae87be30b0
4 changed files with 1 additions and 72 deletions

View File

@@ -917,7 +917,6 @@ impl MessageHandler<DocumentMessage, DocumentMessageContext<'_>> for DocumentMes
}
responses.add(SelectToolMessage::Abort);
responses.add(DocumentMessage::DocumentHistoryForward);
responses.add(ToolMessage::Redo);
responses.add(OverlaysMessage::Draw);
responses.add(EventMessage::SelectionChanged);
}
@@ -1529,10 +1528,9 @@ impl MessageHandler<DocumentMessage, DocumentMessageContext<'_>> for DocumentMes
if self.network_interface.transaction_status() != TransactionStatus::Finished {
return;
}
responses.add(ToolMessage::PreUndo);
responses.add(EventMessage::ToolAbort);
responses.add(DocumentMessage::DocumentHistoryBackward);
responses.add(OverlaysMessage::Draw);
responses.add(ToolMessage::Undo);
responses.add(EventMessage::SelectionChanged);
}
DocumentMessage::UngroupSelectedLayers => {

View File

@@ -76,8 +76,6 @@ pub enum ToolMessage {
},
DeactivateTools,
InitTools,
PreUndo,
Redo,
RefreshToolOptions,
RefreshToolShelf,
ResetColors,
@@ -90,7 +88,6 @@ pub enum ToolMessage {
},
ToggleSelectVsPath,
SwapColors,
Undo,
UpdateCursor,
UpdateHints,
UpdateSelectionMode {

View File

@@ -243,18 +243,6 @@ impl MessageHandler<ToolMessage, ToolMessageContext<'_>> for ToolMessageHandler
responses.add(OverlaysMessage::AddProvider { provider: ARTBOARD_OVERLAY_PROVIDER });
}
ToolMessage::PreUndo => {
let tool_data = &mut self.tool_state.tool_data;
if tool_data.active_tool_type != ToolType::Pen {
responses.add(EventMessage::ToolAbort);
}
}
ToolMessage::Redo => {
let tool_data = &mut self.tool_state.tool_data;
if tool_data.active_tool_type == ToolType::Pen {
responses.add(PenToolMessage::Redo);
}
}
ToolMessage::RefreshToolOptions => {
let tool_data = &mut self.tool_state.tool_data;
@@ -318,12 +306,6 @@ impl MessageHandler<ToolMessage, ToolMessageContext<'_>> for ToolMessageHandler
document_data.update_working_colors(responses); // TODO: Make this an event
}
ToolMessage::Undo => {
let tool_data = &mut self.tool_state.tool_data;
if tool_data.active_tool_type == ToolType::Pen {
responses.add(PenToolMessage::Undo);
}
}
// Sub-messages
tool_message => {
@@ -390,8 +372,6 @@ impl MessageHandler<ToolMessage, ToolMessageContext<'_>> for ToolMessageHandler
SelectRandomWorkingColor,
ResetColors,
SwapColors,
Undo,
);
list.extend(self.tool_state.tool_data.active_tool().actions());
list.extend(self.transform_layer_handler.actions());

View File

@@ -83,7 +83,6 @@ pub enum PenToolMessage {
colinear: Key,
move_anchor_with_handles: Key,
},
Redo,
Undo,
UpdateOptions {
options: PenOptionsUpdate,
@@ -485,30 +484,6 @@ impl PenToolData {
}
}
/// Re-renders the preview after an undo/redo once the graph has re-evaluated, since the layer transform is
/// briefly stale until then and would place the preview off in the wrong space. Also suppresses the angle
/// modifiers (Ctrl, Shift) still held from the shortcut until each is released and pressed again.
fn refresh_preview_after_history(&mut self, responses: &mut VecDeque<Message>) {
self.suppress_lock_angle = true;
self.suppress_snap_angle = true;
self.modifiers.lock_angle = false;
self.modifiers.snap_angle = false;
self.angle_locked = false;
responses.add(DeferMessage::AfterGraphRun {
messages: vec![
PenToolMessage::PointerMove {
snap_angle: Key::Shift,
break_handle: Key::Alt,
lock_angle: Key::Control,
colinear: Key::KeyC,
move_anchor_with_handles: Key::Space,
}
.into(),
],
});
}
/// Check whether target handle is primary, end, or `self.handle_end`
fn check_end_handle_type(&self, vector: &Vector) -> TargetHandle {
match (self.handle_end, self.prior_segment_endpoint, self.prior_segment, self.path_closed) {
@@ -1926,9 +1901,6 @@ impl Fsm for PenToolFsmState {
tool_data.buffering_merged_vector = false;
PenToolFsmState::DraggingHandle(tool_data.handle_mode)
} else {
if tool_data.handle_end.is_some() {
responses.add(DocumentMessage::StartTransaction);
}
// Merge two layers if the point is connected to the end point of another path
// This might not be the correct solution to artboards being included as the other layer,
@@ -2248,24 +2220,6 @@ impl Fsm for PenToolFsmState {
PenToolFsmState::Ready
}
(_, PenToolMessage::Abort) => PenToolFsmState::Ready,
(PenToolFsmState::DraggingHandle(..) | PenToolFsmState::PlacingAnchor, PenToolMessage::Undo) => {
if tool_data.point_index > 0 {
tool_data.point_index -= 1;
tool_data.refresh_preview_after_history(responses);
PenToolFsmState::PlacingAnchor
} else {
responses.add(PenToolMessage::Abort);
self
}
}
(_, PenToolMessage::Redo) => {
tool_data.point_index = (tool_data.point_index + 1).min(tool_data.latest_points.len().saturating_sub(1));
tool_data.refresh_preview_after_history(responses);
match tool_data.point_index {
0 => PenToolFsmState::Ready,
_ => PenToolFsmState::PlacingAnchor,
}
}
_ => self,
}
}