Nudge only the shallowest selected layers to avoid amplified translation (#1975)
* Nudge only the shallowest selected layers * Remove (inadvertent?) settings.json change --------- Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
parent
0c5bccc2fd
commit
6c8a4fe5b3
|
|
@ -658,14 +658,17 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
|
||||||
|
|
||||||
let opposite_corner = ipp.keyboard.key(resize_opposite_corner);
|
let opposite_corner = ipp.keyboard.key(resize_opposite_corner);
|
||||||
let delta = DVec2::new(delta_x, delta_y);
|
let delta = DVec2::new(delta_x, delta_y);
|
||||||
|
let network_interface = &self.network_interface;
|
||||||
|
let can_move = move |layer| {
|
||||||
|
network_interface
|
||||||
|
.selected_nodes(&[])
|
||||||
|
.is_some_and(|selected| selected.layer_visible(layer, network_interface) && !selected.layer_locked(layer, network_interface))
|
||||||
|
};
|
||||||
|
|
||||||
match ipp.keyboard.key(resize) {
|
match ipp.keyboard.key(resize) {
|
||||||
// Nudge translation
|
// Nudge translation
|
||||||
false => {
|
false => {
|
||||||
for layer in self.network_interface.selected_nodes(&[]).unwrap().selected_layers(self.metadata()).filter(|&layer| {
|
for layer in self.network_interface.shallowest_unique_layers(&[]).filter(|layer| can_move(*layer)) {
|
||||||
self.network_interface.selected_nodes(&[]).unwrap().layer_visible(layer, &self.network_interface)
|
|
||||||
&& !self.network_interface.selected_nodes(&[]).unwrap().layer_locked(layer, &self.network_interface)
|
|
||||||
}) {
|
|
||||||
responses.add(GraphOperationMessage::TransformChange {
|
responses.add(GraphOperationMessage::TransformChange {
|
||||||
layer,
|
layer,
|
||||||
transform: DAffine2::from_translation(delta),
|
transform: DAffine2::from_translation(delta),
|
||||||
|
|
@ -697,10 +700,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
|
||||||
let transformation = pivot * scale * pivot.inverse();
|
let transformation = pivot * scale * pivot.inverse();
|
||||||
let document_to_viewport = self.navigation_handler.calculate_offset_transform(ipp.viewport_bounds.center(), &self.document_ptz);
|
let document_to_viewport = self.navigation_handler.calculate_offset_transform(ipp.viewport_bounds.center(), &self.document_ptz);
|
||||||
|
|
||||||
for layer in self.network_interface.selected_nodes(&[]).unwrap().selected_layers(self.metadata()).filter(|&layer| {
|
for layer in self.network_interface.shallowest_unique_layers(&[]).filter(|layer| can_move(*layer)) {
|
||||||
self.network_interface.selected_nodes(&[]).unwrap().layer_visible(layer, &self.network_interface)
|
|
||||||
&& !self.network_interface.selected_nodes(&[]).unwrap().layer_locked(layer, &self.network_interface)
|
|
||||||
}) {
|
|
||||||
let to = document_to_viewport.inverse() * self.metadata().downstream_transform_to_viewport(layer);
|
let to = document_to_viewport.inverse() * self.metadata().downstream_transform_to_viewport(layer);
|
||||||
let original_transform = self.metadata().upstream_transform(layer.to_node());
|
let original_transform = self.metadata().upstream_transform(layer.to_node());
|
||||||
let new = to.inverse() * transformation * to * original_transform;
|
let new = to.inverse() * transformation * to * original_transform;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue