mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2025-12-23 10:11:54 +00:00
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
1 changed files with 8 additions and 8 deletions
|
|
@ -658,14 +658,17 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
|
|||
|
||||
let opposite_corner = ipp.keyboard.key(resize_opposite_corner);
|
||||
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) {
|
||||
// Nudge translation
|
||||
false => {
|
||||
for layer in self.network_interface.selected_nodes(&[]).unwrap().selected_layers(self.metadata()).filter(|&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)
|
||||
}) {
|
||||
for layer in self.network_interface.shallowest_unique_layers(&[]).filter(|layer| can_move(*layer)) {
|
||||
responses.add(GraphOperationMessage::TransformChange {
|
||||
layer,
|
||||
transform: DAffine2::from_translation(delta),
|
||||
|
|
@ -697,10 +700,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageData<'_>> for DocumentMessag
|
|||
let transformation = pivot * scale * pivot.inverse();
|
||||
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| {
|
||||
self.network_interface.selected_nodes(&[]).unwrap().layer_visible(layer, &self.network_interface)
|
||||
&& !self.network_interface.selected_nodes(&[]).unwrap().layer_locked(layer, &self.network_interface)
|
||||
}) {
|
||||
for layer in self.network_interface.shallowest_unique_layers(&[]).filter(|layer| can_move(*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 new = to.inverse() * transformation * to * original_transform;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue