mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-30 06:08:12 +08:00
Fix regressions introduced in the vector nodes migration (#1100)
* Fix double click to enter path tool * Fix error * Fix transform bug * Fix squaring scale on images * Shift node position and refresh graph * Downscale node seperate * Fix mirror * Remove duplicate transform * Always show node graph * Correctly set freehand and spline tool positions * Run cargo format * Maybe fix the scale * Downscaled image is always smaller than origional * Fix one crash * Don't show node graph on welcome screen * Reduce default graph panel height --------- Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
co-authored by
Keavon Chambers
parent
78116f305e
commit
14cf7bef31
@@ -11,7 +11,7 @@ use document_legacy::LayerId;
|
||||
use document_legacy::Operation;
|
||||
use graphene_core::vector::style::Stroke;
|
||||
|
||||
use glam::DVec2;
|
||||
use glam::{DAffine2, DVec2};
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
||||
#[derive(Default)]
|
||||
@@ -219,10 +219,16 @@ fn remove_preview(data: &FreehandToolData) -> Message {
|
||||
fn add_polyline(data: &FreehandToolData, tool_data: &DocumentToolData, responses: &mut VecDeque<Message>) {
|
||||
let layer_path = data.path.clone().unwrap();
|
||||
let subpath = bezier_rs::Subpath::from_anchors(data.points.iter().copied(), false);
|
||||
let position = subpath.bounding_box().unwrap_or_default().into_iter().sum::<DVec2>() / 2.;
|
||||
graph_modification_utils::new_vector_layer(vec![subpath], layer_path.clone(), responses);
|
||||
|
||||
responses.add(GraphOperationMessage::StrokeSet {
|
||||
layer: layer_path,
|
||||
layer: layer_path.clone(),
|
||||
stroke: Stroke::new(tool_data.primary_color, data.weight),
|
||||
});
|
||||
responses.add(GraphOperationMessage::TransformSet {
|
||||
layer: layer_path,
|
||||
transform: DAffine2::from_translation(position),
|
||||
transform_in: TransformIn::Local,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -114,7 +114,6 @@ impl Fsm for ImaginateToolFsmState {
|
||||
(Ready, DragStart) => {
|
||||
shape_data.start(responses, document, input, render_data);
|
||||
responses.push_back(DocumentMessage::StartTransaction.into());
|
||||
responses.push_back(NodeGraphMessage::SetDrawing { new_drawing: true }.into());
|
||||
shape_data.path = Some(document.get_path_for_new_layer());
|
||||
responses.push_back(DocumentMessage::DeselectAllLayers.into());
|
||||
|
||||
@@ -153,7 +152,6 @@ impl Fsm for ImaginateToolFsmState {
|
||||
}
|
||||
(Drawing, DragStop) => {
|
||||
input.mouse.finish_transaction(shape_data.viewport_drag_start(document), responses);
|
||||
responses.push_back(NodeGraphMessage::SetDrawing { new_drawing: false }.into());
|
||||
shape_data.cleanup(responses);
|
||||
|
||||
Ready
|
||||
@@ -161,8 +159,6 @@ impl Fsm for ImaginateToolFsmState {
|
||||
(Drawing, Abort) => {
|
||||
responses.push_back(DocumentMessage::AbortTransaction.into());
|
||||
|
||||
responses.push_back(NodeGraphMessage::SetDrawing { new_drawing: false }.into());
|
||||
|
||||
shape_data.cleanup(responses);
|
||||
|
||||
Ready
|
||||
|
||||
@@ -114,7 +114,6 @@ impl Fsm for NodeGraphToolFsmState {
|
||||
(Ready, DragStart) => {
|
||||
shape_data.start(responses, document, input, render_data);
|
||||
responses.push_back(DocumentMessage::StartTransaction.into());
|
||||
responses.push_back(NodeGraphMessage::SetDrawing { new_drawing: true }.into());
|
||||
shape_data.path = Some(document.get_path_for_new_layer());
|
||||
responses.push_back(DocumentMessage::DeselectAllLayers.into());
|
||||
|
||||
@@ -141,14 +140,12 @@ impl Fsm for NodeGraphToolFsmState {
|
||||
}
|
||||
(Drawing, DragStop) => {
|
||||
input.mouse.finish_transaction(shape_data.viewport_drag_start(document), responses);
|
||||
responses.push_back(NodeGraphMessage::SetDrawing { new_drawing: false }.into());
|
||||
shape_data.cleanup(responses);
|
||||
|
||||
Ready
|
||||
}
|
||||
(Drawing, Abort) => {
|
||||
responses.push_back(DocumentMessage::AbortTransaction.into());
|
||||
responses.push_back(NodeGraphMessage::SetDrawing { new_drawing: false }.into());
|
||||
|
||||
shape_data.cleanup(responses);
|
||||
|
||||
|
||||
@@ -1202,7 +1202,7 @@ fn edit_layer_shallowest_manipulation(document: &DocumentMessageHandler, interse
|
||||
}
|
||||
|
||||
fn edit_layer_deepest_manipulation(intersect: &Layer, intersect_layer_path: &Vec<u64>, responses: &mut VecDeque<Message>) {
|
||||
match intersect.data {
|
||||
match &intersect.data {
|
||||
LayerDataType::Text(_) => {
|
||||
responses.push_front(ToolMessage::ActivateTool { tool_type: ToolType::Text }.into());
|
||||
responses.push_back(TextToolMessage::Interact.into());
|
||||
@@ -1210,11 +1210,8 @@ fn edit_layer_deepest_manipulation(intersect: &Layer, intersect_layer_path: &Vec
|
||||
LayerDataType::Shape(_) => {
|
||||
responses.push_front(ToolMessage::ActivateTool { tool_type: ToolType::Path }.into());
|
||||
}
|
||||
LayerDataType::NodeGraphFrame(_) => {
|
||||
let replacement_selected_layers = vec![intersect_layer_path.clone()];
|
||||
let layer_path = intersect_layer_path.clone();
|
||||
responses.push_back(DocumentMessage::SetSelectedLayers { replacement_selected_layers }.into());
|
||||
responses.push_back(NodeGraphMessage::OpenNodeGraph { layer_path }.into());
|
||||
LayerDataType::NodeGraphFrame(frame) if frame.vector_data.is_some() => {
|
||||
responses.push_front(ToolMessage::ActivateTool { tool_type: ToolType::Path }.into());
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
||||
@@ -262,6 +262,7 @@ fn add_spline(tool_data: &SplineToolData, global_tool_data: &DocumentToolData, s
|
||||
}
|
||||
|
||||
let subpath = bezier_rs::Subpath::new_cubic_spline(points);
|
||||
let position = subpath.bounding_box().unwrap_or_default().into_iter().sum::<DVec2>() / 2.;
|
||||
|
||||
let layer_path = tool_data.path.clone().unwrap();
|
||||
graph_modification_utils::new_vector_layer(vec![subpath], layer_path.clone(), responses);
|
||||
@@ -269,4 +270,9 @@ fn add_spline(tool_data: &SplineToolData, global_tool_data: &DocumentToolData, s
|
||||
layer: layer_path.clone(),
|
||||
stroke: Stroke::new(global_tool_data.primary_color, tool_data.weight),
|
||||
});
|
||||
responses.add(GraphOperationMessage::TransformSet {
|
||||
layer: layer_path,
|
||||
transform: glam::DAffine2::from_translation(position),
|
||||
transform_in: TransformIn::Local,
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user