mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-15 22:28:10 +08:00
This commit is contained in:
@@ -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 => {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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,
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user