Change selection to only the duplicated layer (not both layers) when using Ctrl+D (#1118)

* Nudging is now based on local pixel dimensions

* Brush tool live preview (#1116)

* Disable vector preview for brush tool

* Fix brush preview

* Fix warping

* Left and right square brackets to change size

* Add linear interpolation

* Modfiy existing selected brush layer

* Resolve warnings

---------

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
Co-authored-by: Keavon Chambers <keavon@keavon.com>

* Duplicating a layer selects only new layer

* Add Ctrl+J duplicate alias hotkey

---------

Co-authored-by: 0HyperCube <78500760+0HyperCube@users.noreply.github.com>
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
Christopher Mendoza 2023-04-16 14:42:12 -07:00 committed by Keavon Chambers
parent fa23e9d55b
commit 4c9ef0fe6c
3 changed files with 7 additions and 4 deletions

View File

@ -242,6 +242,7 @@ pub fn default_mapping() -> Mapping {
entry!(KeyDown(KeyA); modifiers=[Accel], action_dispatch=DocumentMessage::SelectAllLayers),
entry!(KeyDown(KeyS); modifiers=[Accel], action_dispatch=DocumentMessage::SaveDocument),
entry!(KeyDown(KeyD); modifiers=[Accel], action_dispatch=DocumentMessage::DuplicateSelectedLayers),
entry!(KeyDown(KeyJ); modifiers=[Accel], action_dispatch=DocumentMessage::DuplicateSelectedLayers),
entry!(KeyDown(KeyG); modifiers=[Accel], action_dispatch=DocumentMessage::GroupSelectedLayers),
entry!(KeyDown(KeyG); modifiers=[Accel, Shift], action_dispatch=DocumentMessage::UngroupSelectedLayers),
entry!(KeyDown(KeyN); modifiers=[Accel, Shift], action_dispatch=DocumentMessage::CreateEmptyFolder { container_path: vec![] }),

View File

@ -348,6 +348,8 @@ impl MessageHandler<DocumentMessage, (u64, &InputPreprocessorMessageHandler, &Pe
}
DuplicateSelectedLayers => {
self.backup(responses);
responses.push_front(SetSelectedLayers { replacement_selected_layers: vec![] }.into());
self.layer_range_selection_reference.clear();
for path in self.selected_layers_sorted() {
responses.push_back(DocumentOperation::DuplicateLayer { path: path.to_vec() }.into());
}

View File

@ -239,12 +239,10 @@ mod tests {
#[allow(unused_imports)]
use crate::value::ClonedNode;
fn string_data(string: &str) -> Vec<u8> {
string.split(',').map(|s| s.parse().unwrap()).collect::<Vec<u8>>()
}
#[test]
fn brightness_contrast_legacy_tests() {
let string_data = |string: &str| string.split(',').map(|s| s.parse().unwrap()).collect::<Vec<u8>>();
let brightness_contrast_legacy_map = |brightness, contrast| -> [u8; 256] {
let brightness = ClonedNode::new(brightness);
let contrast = ClonedNode::new(contrast);
@ -300,6 +298,8 @@ mod tests {
#[test]
fn brightness_contrast_tests() {
let string_data = |string: &str| string.split(',').map(|s| s.parse().unwrap()).collect::<Vec<u8>>();
let brightness_contrast_map = |brightness, contrast| -> [u8; 1024] {
let brightness = ClonedNode::new(brightness);
let contrast = ClonedNode::new(contrast);