Skip to content

Commit 3ce1317

Browse files
0HyperCubeKeavon
andauthored
Make the Pen tool only append new paths when Shift is held (#2102)
* Append to a path with shift * Fixup transforms * Revert unnecessary transform change * Fix delete node button transaction * Prevent artboard from being selected after making a new document --------- Co-authored-by: Keavon Chambers <[email protected]>
1 parent d649052 commit 3ce1317

File tree

6 files changed

+193
-151
lines changed

6 files changed

+193
-151
lines changed

editor/src/messages/dialog/new_document_dialog/new_document_dialog_message_handler.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,18 +25,18 @@ impl MessageHandler<NewDocumentDialogMessage, ()> for NewDocumentDialogMessageHa
2525

2626
let create_artboard = !self.infinite && self.dimensions.x > 0 && self.dimensions.y > 0;
2727
if create_artboard {
28+
responses.add(Message::StartBuffer);
2829
responses.add(GraphOperationMessage::NewArtboard {
2930
id: NodeId::new(),
3031
artboard: graphene_core::Artboard::new(IVec2::ZERO, self.dimensions.as_ivec2()),
3132
});
3233
}
3334

34-
responses.add(NodeGraphMessage::RunDocumentGraph);
35-
responses.add(NodeGraphMessage::UpdateNewNodeGraph);
36-
3735
// TODO: Figure out how to get StartBuffer to work here so we can delete this and use `DocumentMessage::ZoomCanvasToFitAll` instead
36+
// Currently, it is necessary to use `FrontendMessage::TriggerDelayedZoomCanvasToFitAll` rather than `DocumentMessage::ZoomCanvasToFitAll` because the size of the viewport is not yet populated
3837
responses.add(Message::StartBuffer);
3938
responses.add(FrontendMessage::TriggerDelayedZoomCanvasToFitAll);
39+
responses.add(DocumentMessage::DeselectAllLayers);
4040
}
4141
}
4242

editor/src/messages/input_mapper/input_mappings.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ pub fn input_mappings() -> Mapping {
249249
//
250250
// PenToolMessage
251251
entry!(PointerMove; refresh_keys=[Control, Alt, Shift], action_dispatch=PenToolMessage::PointerMove { snap_angle: Shift, break_handle: Alt, lock_angle: Control}),
252-
entry!(KeyDown(MouseLeft); action_dispatch=PenToolMessage::DragStart),
252+
entry!(KeyDown(MouseLeft); action_dispatch=PenToolMessage::DragStart { append_to_selected: Shift }),
253253
entry!(KeyUp(MouseLeft); action_dispatch=PenToolMessage::DragStop),
254254
entry!(KeyDown(MouseRight); action_dispatch=PenToolMessage::Confirm),
255255
entry!(KeyDown(Escape); action_dispatch=PenToolMessage::Confirm),

editor/src/messages/portfolio/document/document_message_handler.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,6 +338,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
338338
responses.add(NodeGraphMessage::RunDocumentGraph);
339339
responses.add(NodeGraphMessage::SelectedNodesUpdated);
340340
responses.add(NodeGraphMessage::SendGraph);
341+
responses.add(DocumentMessage::EndTransaction);
341342
}
342343
DocumentMessage::DeleteSelectedLayers => {
343344
responses.add(NodeGraphMessage::DeleteSelectedNodes { delete_children: true });
@@ -1279,7 +1280,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
12791280
layer: node_layer_id,
12801281
transform: DAffine2::from_translation(bounds_rounded_dimensions / 2.),
12811282
transform_in: TransformIn::Local,
1282-
skip_rerender: true,
1283+
skip_rerender: false,
12831284
});
12841285
}
12851286
DocumentMessage::ZoomCanvasTo100Percent => {
@@ -1297,6 +1298,8 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
12971298
if let Some(bounds) = bounds {
12981299
responses.add(NavigationMessage::CanvasTiltSet { angle_radians: 0. });
12991300
responses.add(NavigationMessage::FitViewportToBounds { bounds, prevent_zoom_past_100: true });
1301+
} else {
1302+
warn!("Cannot zoom due to no bounds")
13001303
}
13011304
}
13021305
DocumentMessage::Noop => (),

editor/src/messages/portfolio/document/navigation/navigation_message_handler.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,7 @@ impl MessageHandler<NavigationMessage, NavigationMessageData<'_>> for Navigation
321321
let diagonal = pos2 - pos1;
322322

323323
if diagonal.length() < f64::EPSILON * 1000. || ipp.viewport_bounds.size() == DVec2::ZERO {
324+
warn!("Cannot center since the viewport size is 0");
324325
return;
325326
}
326327

editor/src/messages/portfolio/portfolio_message_handler.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -706,6 +706,7 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageData<'_>> for PortfolioMes
706706
responses.add(DocumentMessage::WrapContentInArtboard { place_artboard_at_origin: true });
707707

708708
// TODO: Figure out how to get StartBuffer to work here so we can delete this and use `DocumentMessage::ZoomCanvasToFitAll` instead
709+
// Currently, it is necessary to use `FrontendMessage::TriggerDelayedZoomCanvasToFitAll` rather than `DocumentMessage::ZoomCanvasToFitAll` because the size of the viewport is not yet populated
709710
responses.add(Message::StartBuffer);
710711
responses.add(FrontendMessage::TriggerDelayedZoomCanvasToFitAll);
711712
}
@@ -737,6 +738,7 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageData<'_>> for PortfolioMes
737738
responses.add(DocumentMessage::WrapContentInArtboard { place_artboard_at_origin: true });
738739

739740
// TODO: Figure out how to get StartBuffer to work here so we can delete this and use `DocumentMessage::ZoomCanvasToFitAll` instead
741+
// Currently, it is necessary to use `FrontendMessage::TriggerDelayedZoomCanvasToFitAll` rather than `DocumentMessage::ZoomCanvasToFitAll` because the size of the viewport is not yet populated
740742
responses.add(Message::StartBuffer);
741743
responses.add(FrontendMessage::TriggerDelayedZoomCanvasToFitAll);
742744
}

0 commit comments

Comments
 (0)