[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-kimageshop
Subject: [krita/rempt/impex-refactoring] libs/image: Don't merge onion skins when merging two layers
From: Dmitry Kazakov <dimula73 () gmail ! com>
Date: 2016-11-03 8:15:00
Message-ID: E1c2DAq-0001DV-8y () code ! kde ! org
[Download RAW message or body]
Git commit 3f69cfc7cad2d5194220dadd2c8c3c1a979b28d8 by Dmitry Kazakov.
Committed on 03/11/2016 at 08:14.
Pushed by dkazakov into branch 'rempt/impex-refactoring'.
Don't merge onion skins when merging two layers
That was quite an old bug :)
BUG:363115
CC:kimageshop@kde.org
M +30 -4 libs/image/kis_layer_utils.cpp
http://commits.kde.org/krita/3f69cfc7cad2d5194220dadd2c8c3c1a979b28d8
diff --git a/libs/image/kis_layer_utils.cpp b/libs/image/kis_layer_utils.cpp
index 319bab9..0d8a691 100644
--- a/libs/image/kis_layer_utils.cpp
+++ b/libs/image/kis_layer_utils.cpp
@@ -173,6 +173,30 @@ namespace KisLayerUtils {
MergeDownInfoBaseSP m_info;
};
+ struct DisableOnionSkins : public KisCommandUtils::AggregateCommand {
+ DisableOnionSkins(MergeDownInfoBaseSP info) : m_info(info) {}
+
+ void populateChildCommands() override {
+ Q_FOREACH (KisNodeSP node, m_info->allSrcNodes()) {
+ recursiveApplyNodes(node,
+ [this] (KisNodeSP node) {
+ if \
(KisLayerPropertiesIcons::nodeProperty(node, KisLayerPropertiesIcons::onionSkins, \
false).toBool()) { +
+ KisBaseNode::PropertyList props = \
node->sectionModelProperties(); + \
KisLayerPropertiesIcons::setNodeProperty(&props, + \
KisLayerPropertiesIcons::onionSkins, + \
false); +
+ addCommand(new \
KisNodePropertyListCommand(node, props)); + }
+ });
+ }
+ }
+
+ private:
+ MergeDownInfoBaseSP m_info;
+ };
+
struct RefreshHiddenAreas : public KUndo2Command {
RefreshHiddenAreas(MergeDownInfoBaseSP info) : m_info(info) {}
@@ -739,9 +763,10 @@ namespace KisLayerUtils {
if (layer->visible() && prevLayer->visible()) {
MergeDownInfoSP info(new MergeDownInfo(image, prevLayer, layer));
- // disable key strokes on all colorize masks and wait until
- // update is finished with a barrier
+ // disable key strokes on all colorize masks, all onion skins on
+ // paint layers and wait until update is finished with a barrier
applicator.applyCommand(new DisableColorizeKeyStrokes(info));
+ applicator.applyCommand(new DisableOnionSkins(info));
applicator.applyCommand(new KUndo2Command(), KisStrokeJobData::BARRIER);
applicator.applyCommand(new KeepMergedNodesSelected(info, false));
@@ -1034,9 +1059,10 @@ namespace KisLayerUtils {
if (mergedNodes.size() > 1 || invisibleNodes.isEmpty()) {
MergeMultipleInfoSP info(new MergeMultipleInfo(image, mergedNodes));
- // disable key strokes on all colorize masks and wait until
- // update is finished with a barrier
+ // disable key strokes on all colorize masks, all onion skins on
+ // paint layers and wait until update is finished with a barrier
applicator.applyCommand(new DisableColorizeKeyStrokes(info));
+ applicator.applyCommand(new DisableOnionSkins(info));
applicator.applyCommand(new KUndo2Command(), KisStrokeJobData::BARRIER);
applicator.applyCommand(new KeepMergedNodesSelected(info, putAfter, \
false));
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic