mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-25 05:18:11 +08:00
Add Path tool support for G/R/S rotation and scaling with a single selected handle (#2180)
* grab_scale_path and backspace for pen * minor improvements and fixes * code-review changes * Avoid more nesting, and other code cleanup --------- Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
co-authored by
Keavon Chambers
parent
9ad6c31483
commit
2e4fb95dea
@@ -76,8 +76,8 @@ impl MessageHandler<ToolMessage, ToolMessageData<'_>> for ToolMessageHandler {
|
||||
self.tool_is_active = true;
|
||||
|
||||
// Send the old and new tools a transition to their FSM Abort states
|
||||
let mut send_abort_to_tool = |tool_type, update_hints_and_cursor: bool| {
|
||||
if let Some(tool) = tool_data.tools.get_mut(&tool_type) {
|
||||
let mut send_abort_to_tool = |old_tool: ToolType, new_tool: ToolType, update_hints_and_cursor: bool| {
|
||||
if let Some(tool) = tool_data.tools.get_mut(&new_tool) {
|
||||
let mut data = ToolActionHandlerData {
|
||||
document,
|
||||
document_id,
|
||||
@@ -101,9 +101,14 @@ impl MessageHandler<ToolMessage, ToolMessageData<'_>> for ToolMessageHandler {
|
||||
tool.process_message(ToolMessage::UpdateCursor, responses, &mut data);
|
||||
}
|
||||
}
|
||||
|
||||
if matches!(old_tool, ToolType::Path | ToolType::Select) {
|
||||
responses.add(TransformLayerMessage::CancelTransformOperation);
|
||||
}
|
||||
};
|
||||
send_abort_to_tool(tool_type, true);
|
||||
send_abort_to_tool(old_tool, false);
|
||||
|
||||
send_abort_to_tool(old_tool, tool_type, true);
|
||||
send_abort_to_tool(old_tool, old_tool, false);
|
||||
|
||||
// Unsubscribe old tool from the broadcaster
|
||||
tool_data.tools.get(&tool_type).unwrap().deactivate(responses);
|
||||
|
||||
Reference in New Issue
Block a user