Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 20a8553

Browse files
committed
Move sortAndFilterAnyMergableNodesSafe into KisLayerUtils
All node sorting algorithms should be in one place
1 parent d740abc commit 20a8553

File tree

3 files changed

+27
-24
lines changed

3 files changed

+27
-24
lines changed

libs/image/kis_layer_utils.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1178,6 +1178,30 @@ namespace KisLayerUtils {
11781178
return result;
11791179
}
11801180

1181+
KisNodeList sortAndFilterAnyMergableNodesSafe(const KisNodeList &nodes, KisImageSP image) {
1182+
KisNodeList filteredNodes = nodes;
1183+
KisNodeList sortedNodes;
1184+
1185+
KisLayerUtils::filterMergableNodes(filteredNodes, true);
1186+
1187+
bool haveExternalNodes = false;
1188+
Q_FOREACH (KisNodeSP node, nodes) {
1189+
if (node->graphListener() != image->root()->graphListener()) {
1190+
haveExternalNodes = true;
1191+
break;
1192+
}
1193+
}
1194+
1195+
if (!haveExternalNodes) {
1196+
KisLayerUtils::sortMergableNodes(image->root(), filteredNodes, sortedNodes);
1197+
} else {
1198+
sortedNodes = filteredNodes;
1199+
}
1200+
1201+
return sortedNodes;
1202+
}
1203+
1204+
11811205
void addCopyOfNameTag(KisNodeSP node)
11821206
{
11831207
const QString prefix = i18n("Copy of");

libs/image/kis_layer_utils.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ namespace KisLayerUtils
4040
KRITAIMAGE_EXPORT void sortMergableNodes(KisNodeSP root, QList<KisNodeSP> &inputNodes, QList<KisNodeSP> &outputNodes);
4141
KRITAIMAGE_EXPORT KisNodeList sortMergableNodes(KisNodeSP root, KisNodeList nodes);
4242
KRITAIMAGE_EXPORT void filterMergableNodes(KisNodeList &nodes, bool allowMasks = false);
43+
KRITAIMAGE_EXPORT KisNodeList sortAndFilterAnyMergableNodesSafe(const KisNodeList &nodes, KisImageSP image);
4344
KRITAIMAGE_EXPORT bool checkIsChildOf(KisNodeSP node, const KisNodeList &parents);
4445
KRITAIMAGE_EXPORT void filterUnlockedNodes(KisNodeList &nodes);
4546

libs/ui/kis_node_juggler_compressed.cpp

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -310,28 +310,6 @@ class ActivateSelectionMasksCommand : public KisCommandUtils::FlipFlopCommand
310310
QList<KisSelectionMaskSP> m_activeAfter;
311311
};
312312

313-
KisNodeList sortAndFilterNodes(const KisNodeList &nodes, KisImageSP image) {
314-
KisNodeList filteredNodes = nodes;
315-
KisNodeList sortedNodes;
316-
317-
KisLayerUtils::filterMergableNodes(filteredNodes, true);
318-
319-
bool haveExternalNodes = false;
320-
Q_FOREACH (KisNodeSP node, nodes) {
321-
if (node->graphListener() != image->root()->graphListener()) {
322-
haveExternalNodes = true;
323-
break;
324-
}
325-
}
326-
327-
if (!haveExternalNodes) {
328-
KisLayerUtils::sortMergableNodes(image->root(), filteredNodes, sortedNodes);
329-
} else {
330-
sortedNodes = filteredNodes;
331-
}
332-
333-
return sortedNodes;
334-
}
335313

336314
/**
337315
* A generalized command to muve up/down a set of layer
@@ -369,7 +347,7 @@ struct LowerRaiseLayer : public KisCommandUtils::AggregateCommand {
369347
}
370348

371349
void populateChildCommands() override {
372-
KisNodeList sortedNodes = sortAndFilterNodes(m_nodes, m_image);
350+
KisNodeList sortedNodes = KisLayerUtils::sortAndFilterAnyMergableNodesSafe(m_nodes, m_image);
373351
KisNodeSP headNode = m_lower ? sortedNodes.first() : sortedNodes.last();
374352
const NodesType nodesType = getNodesType(sortedNodes);
375353

@@ -493,7 +471,7 @@ struct DuplicateLayers : public KisCommandUtils::AggregateCommand {
493471
m_mode(mode) {}
494472

495473
void populateChildCommands() override {
496-
KisNodeList filteredNodes = sortAndFilterNodes(m_nodes, m_image);
474+
KisNodeList filteredNodes = KisLayerUtils::sortAndFilterAnyMergableNodesSafe(m_nodes, m_image);
497475

498476
if (filteredNodes.isEmpty()) return;
499477

0 commit comments

Comments
 (0)