Skip to content

Commit b178ed4

Browse files
mTvare6Keavon
authored andcommitted
Fix artboard
1 parent e724050 commit b178ed4

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

editor/src/messages/portfolio/portfolio_message_handler.rs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -911,6 +911,7 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageData<'_>> for PortfolioMes
911911
}
912912

913913
responses.add(NodeGraphMessage::RunDocumentGraph);
914+
responses.add(Message::StartBuffer);
914915
responses.add(PortfolioMessage::CenterPastedLayers { layers });
915916
}
916917
}
@@ -921,11 +922,8 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageData<'_>> for PortfolioMes
921922
let viewport_center = viewport_bounds.center();
922923
let transform = document.metadata().document_to_viewport;
923924

924-
let viewport_points = Quad::from_box_at_zero(ipp.viewport_bounds.size()).0;
925-
926-
let inv_transform = transform.inverse();
927-
let doc_viewport_points = viewport_points.map(|p| inv_transform.transform_point2(p));
928-
let viewport_in_doc_space = Quad(doc_viewport_points);
925+
let viewport_in_doc_space = transform.inverse() * viewport_bounds;
926+
let viewport_center_in_doc_space = transform.inverse().transform_point2(viewport_center);
929927

930928
let mut positions = Vec::new();
931929

@@ -963,21 +961,24 @@ impl MessageHandler<PortfolioMessage, PortfolioMessageData<'_>> for PortfolioMes
963961

964962
if !positions.is_empty() {
965963
let mean_pos = positions.iter().fold(glam::DVec2::ZERO, |acc, (_, pos, _)| acc + *pos) / positions.len() as f64;
964+
let doc_space_translation = viewport_center_in_doc_space - mean_pos;
966965

967966
for (layer, pos, is_artboard) in positions {
968-
let offset_from_center = pos - mean_pos;
969-
let new_pos = viewport_center + transform.transform_vector2(offset_from_center);
970-
971967
if is_artboard {
972968
if let Some(bounds) = document.metadata().bounding_box_document(layer) {
973969
let dimensions = (bounds[1] - bounds[0]).round().as_ivec2();
970+
let new_artboard_pos = pos + doc_space_translation - bounds[1].midpoint(bounds[0]);
971+
974972
responses.add(GraphOperationMessage::ResizeArtboard {
975973
layer,
976-
location: new_pos.round().as_ivec2(),
974+
location: new_artboard_pos.round().as_ivec2(),
977975
dimensions,
978976
});
979977
}
980978
} else {
979+
let offset_from_center = pos - mean_pos;
980+
let new_pos = viewport_center + transform.transform_vector2(offset_from_center);
981+
981982
let mut new_transform = transform;
982983
new_transform.translation = new_pos;
983984
responses.add(GraphOperationMessage::TransformSet {

0 commit comments

Comments
 (0)