From 2b177601b5e97608cf2e2c9573697b04f5c5676f Mon Sep 17 00:00:00 2001 From: Gaspar Capello Date: Thu, 21 Jun 2018 14:37:52 -0300 Subject: [PATCH] Fix Duplicate Cels ignores collapsed layer groups (fix #1727) --- src/app/commands/cmd_new_frame.cpp | 6 ++++-- src/doc/selected_layers.cpp | 9 +++++++++ src/doc/selected_layers.h | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/app/commands/cmd_new_frame.cpp b/src/app/commands/cmd_new_frame.cpp index 7c1341b15..add7b3ec0 100644 --- a/src/app/commands/cmd_new_frame.cpp +++ b/src/app/commands/cmd_new_frame.cpp @@ -118,9 +118,11 @@ void NewFrameCommand::onExecute(Context* context) SelectedLayers selLayers; if (site->inFrames()) selLayers.selectAllLayers(writer.sprite()->root()); - else + else { selLayers = site->selectedLayers(); - + selLayers.expandCollapsedGroups(); + } + frame_t frameRange = (site->selectedFrames().lastFrame() - site->selectedFrames().firstFrame() + 1); diff --git a/src/doc/selected_layers.cpp b/src/doc/selected_layers.cpp index e31921938..5c90ea3d6 100644 --- a/src/doc/selected_layers.cpp +++ b/src/doc/selected_layers.cpp @@ -106,6 +106,15 @@ void SelectedLayers::selectAllLayers(LayerGroup* group) } } +void SelectedLayers::expandCollapsedGroups() +{ + auto copy = m_set; + for (Layer* layer : copy) { + if (layer->isGroup() && layer->isCollapsed()) + selectAllLayers(static_cast(layer)); + } +} + void SelectedLayers::displace(layer_t layerDelta) { // Do nothing case diff --git a/src/doc/selected_layers.h b/src/doc/selected_layers.h index 4a1726f7b..74ecd0b93 100644 --- a/src/doc/selected_layers.h +++ b/src/doc/selected_layers.h @@ -41,6 +41,7 @@ namespace doc { LayerList toLayerList() const; void removeChildrenIfParentIsSelected(); + void expandCollapsedGroups(); void selectAllLayers(LayerGroup* group); void displace(layer_t layerDelta);