Skip to content

Commit f3a51b6

Browse files
committed
Merge branch 'master' into foo
2 parents 3b57561 + 9fe2410 commit f3a51b6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+1564
-1408
lines changed

demo-artwork/changing-seasons.graphite

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

demo-artwork/isometric-fountain.graphite

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

demo-artwork/marbled-mandelbrot.graphite

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

demo-artwork/painted-dreams.graphite

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

demo-artwork/parametric-dunescape.graphite

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

demo-artwork/procedural-string-lights.graphite

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

demo-artwork/red-dress.graphite

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

demo-artwork/valley-of-spires.graphite

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

editor/src/dispatcher.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -498,9 +498,14 @@ mod test {
498498
println!("-------------------------------------------------");
499499
println!("Failed test due to receiving a DisplayDialogError while loading a Graphite demo file.");
500500
println!();
501+
println!("NOTE:");
502+
println!("Document upgrading isn't performed in tests like when opening in the actual editor.");
503+
println!("You may need to open and re-save a document in the editor to apply its migrations.");
504+
println!();
501505
println!("DisplayDialogError details:");
502506
println!();
503-
println!("Description: {value}");
507+
println!("Description:");
508+
println!("{value}");
504509
println!("-------------------------------------------------");
505510
println!();
506511

@@ -538,7 +543,9 @@ mod test {
538543
});
539544

540545
// Check if the graph renders
541-
editor.eval_graph().await;
546+
if let Err(e) = editor.eval_graph().await {
547+
print_problem_to_terminal_on_failure(&format!("Failed to evaluate the graph for document '{document_name}':\n{e}"));
548+
}
542549

543550
for response in responses {
544551
// Check for the existence of the file format incompatibility warning dialog after opening the test file

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

Lines changed: 36 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ use glam::{DAffine2, DVec2, IVec2};
3030
use graph_craft::document::value::TaggedValue;
3131
use graph_craft::document::{NodeId, NodeInput, NodeNetwork, OldNodeNetwork};
3232
use graphene_core::raster::BlendMode;
33-
use graphene_core::raster::image::ImageFrameTable;
33+
use graphene_core::raster::image::RasterDataTable;
3434
use graphene_core::vector::style::ViewMode;
3535
use graphene_std::renderer::{ClickTarget, Quad};
3636
use graphene_std::vector::{PointId, path_bool_lib};
@@ -690,38 +690,41 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
690690
.iter()
691691
.map(|layer| {
692692
if layer.parent(self.metadata()) != Some(parent) {
693-
(*layer, 0)
694-
} else {
695-
let upstream_selected_siblings = layer
696-
.downstream_siblings(self.network_interface.document_metadata())
697-
.filter(|sibling| {
698-
sibling != layer
699-
&& layers_to_move.iter().any(|layer| {
700-
layer == sibling
701-
&& layer
702-
.parent(self.metadata())
703-
.is_some_and(|parent| parent.children(self.metadata()).position(|child| child == *layer) < Some(insert_index))
704-
})
705-
})
706-
.count();
707-
(*layer, upstream_selected_siblings)
693+
return (*layer, 0);
708694
}
695+
696+
let upstream_selected_siblings = layer
697+
.downstream_siblings(self.network_interface.document_metadata())
698+
.filter(|sibling| {
699+
sibling != layer
700+
&& layers_to_move.iter().any(|layer| {
701+
layer == sibling
702+
&& layer
703+
.parent(self.metadata())
704+
.is_some_and(|parent| parent.children(self.metadata()).position(|child| child == *layer) < Some(insert_index))
705+
})
706+
})
707+
.count();
708+
(*layer, upstream_selected_siblings)
709709
})
710710
.collect::<Vec<_>>();
711711

712712
responses.add(DocumentMessage::AddTransaction);
713+
713714
for (layer_index, (layer_to_move, insert_offset)) in layers_to_move_with_insert_offset.into_iter().enumerate() {
714-
let calculated_insert_index = insert_index + layer_index - insert_offset;
715715
responses.add(NodeGraphMessage::MoveLayerToStack {
716716
layer: layer_to_move,
717717
parent,
718-
insert_index: calculated_insert_index,
718+
insert_index: insert_index + layer_index - insert_offset,
719719
});
720720

721721
if layer_to_move.parent(self.metadata()) != Some(parent) {
722+
// TODO: Fix this so it works when dragging a layer into a group parent which has a Transform node, which used to work before #2689 caused this regression by removing the empty VectorData table row.
723+
// TODO: See #2688 for this issue.
722724
let layer_local_transform = self.network_interface.document_metadata().transform_to_viewport(layer_to_move);
723725
let undo_transform = self.network_interface.document_metadata().transform_to_viewport(parent).inverse();
724726
let transform = undo_transform * layer_local_transform;
727+
725728
responses.add(GraphOperationMessage::TransformSet {
726729
layer: layer_to_move,
727730
transform,
@@ -861,7 +864,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
861864

862865
responses.add(DocumentMessage::AddTransaction);
863866

864-
let layer = graph_modification_utils::new_image_layer(ImageFrameTable::new(image), layer_node_id, self.new_layer_parent(true), responses);
867+
let layer = graph_modification_utils::new_image_layer(RasterDataTable::new(image), layer_node_id, self.new_layer_parent(true), responses);
865868

866869
if let Some(name) = name {
867870
responses.add(NodeGraphMessage::SetDisplayName {
@@ -3234,6 +3237,8 @@ mod document_message_handler_tests {
32343237
assert_eq!(rect_grandparent, folder2, "Rectangle's grandparent should be folder2");
32353238
}
32363239

3240+
// TODO: Fix https://github.com/GraphiteEditor/Graphite/issues/2688 and reenable this as part of that fix.
3241+
#[ignore]
32373242
#[tokio::test]
32383243
async fn test_moving_layers_retains_transforms() {
32393244
let mut editor = EditorTestUtils::create();
@@ -3292,18 +3297,24 @@ mod document_message_handler_tests {
32923297
let document = editor.active_document();
32933298
let rect_bbox_before = document.metadata().bounding_box_viewport(rect_layer).unwrap();
32943299

3295-
// Moving rectangle from folder1 --> folder2
3300+
// Moving rectangle from folder1 to folder2
32963301
editor.handle_message(DocumentMessage::MoveSelectedLayersTo { parent: folder2, insert_index: 0 }).await;
32973302

32983303
// Rectangle's viewport position after moving
32993304
let document = editor.active_document();
33003305
let rect_bbox_after = document.metadata().bounding_box_viewport(rect_layer).unwrap();
33013306

33023307
// Verifing the rectangle maintains approximately the same position in viewport space
3303-
let before_center = (rect_bbox_before[0] + rect_bbox_before[1]) / 2.;
3304-
let after_center = (rect_bbox_after[0] + rect_bbox_after[1]) / 2.;
3305-
let distance = before_center.distance(after_center);
3306-
3307-
assert!(distance < 1., "Rectangle should maintain its viewport position after moving between transformed groups");
3308+
let before_center = (rect_bbox_before[0] + rect_bbox_before[1]) / 2.; // TODO: Should be: DVec2(0.0, -25.0), regression (#2688) causes it to be: DVec2(100.0, 25.0)
3309+
let after_center = (rect_bbox_after[0] + rect_bbox_after[1]) / 2.; // TODO: Should be: DVec2(0.0, -25.0), regression (#2688) causes it to be: DVec2(200.0, 75.0)
3310+
let distance = before_center.distance(after_center); // TODO: Should be: 0.0, regression (#2688) causes it to be: 111.80339887498948
3311+
3312+
assert!(
3313+
distance < 1.,
3314+
"Rectangle should maintain its viewport position after moving between transformed groups.\n\
3315+
Before: {before_center:?}\n\
3316+
After: {after_center:?}\n\
3317+
Dist: {distance} (should be < 1)"
3318+
);
33083319
}
33093320
}

0 commit comments

Comments
 (0)