[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-kimageshop
Subject:    [calligra/calligra/2.9] krita/plugins/tools/tool_transform2: Transform invisible layers if they are 
From:       Dmitry Kazakov <dimula73 () gmail ! com>
Date:       2015-08-13 17:15:17
Message-ID: E1ZPw61-0001eb-R2 () scm ! kde ! org
[Download RAW message or body]

Git commit 360a80602e6b7758338eece6c75dc8d5aba21bcc by Dmitry Kazakov.
Committed on 13/08/2015 at 15:46.
Pushed by dkazakov into branch 'calligra/2.9'.

Transform invisible layers if they are part of the group

When transforming a group recursively, some of the layers may be invisible
so the user may just forget about them. Now we transform the layers even if
they are invisible. The user still can avoid this behavior by
setting the layer as "locked".

Thanks Roman Ilin for suggestion!

Ref T475
CC:kimageshop@kde.org

M  +19   -4    krita/plugins/tools/tool_transform2/kis_tool_transform.cc
M  +1    -1    krita/plugins/tools/tool_transform2/kis_tool_transform.h

http://commits.kde.org/calligra/360a80602e6b7758338eece6c75dc8d5aba21bcc

diff --git a/krita/plugins/tools/tool_transform2/kis_tool_transform.cc \
b/krita/plugins/tools/tool_transform2/kis_tool_transform.cc index df42df8..8bff9d8 \
                100644
--- a/krita/plugins/tools/tool_transform2/kis_tool_transform.cc
+++ b/krita/plugins/tools/tool_transform2/kis_tool_transform.cc
@@ -902,7 +902,17 @@ void \
KisToolTransform::startStroke(ToolTransformArgs::TransformMode mode)  }
 
     m_strokeData = StrokeData(image()->startStroke(strategy));
-    clearDevices(m_transaction.rootNode(), m_workRecursively);
+
+    bool haveInvisibleNodes = clearDevices(m_transaction.rootNode(), \
m_workRecursively); +    if (haveInvisibleNodes) {
+        KisCanvas2 *kisCanvas = dynamic_cast<KisCanvas2*>(canvas());
+        kisCanvas->viewManager()->
+            showFloatingMessage(
+                i18nc("floating message in transformation tool",
+                      "Invisible sublayers will also be transformed. Lock layers if \
you do not want them to be transformed "), +                QIcon(), 4000, \
KisFloatingMessage::Low); +    }
+
 
     Q_ASSERT(m_changesTracker.isEmpty());
     commitChanges();
@@ -957,15 +967,18 @@ void KisToolTransform::slotTrackerChangedConfig()
     updateOptionWidget();
 }
 
-void KisToolTransform::clearDevices(KisNodeSP node, bool recursive)
+bool KisToolTransform::clearDevices(KisNodeSP node, bool recursive)
 {
-    if (!node->isEditable()) return;
+    bool haveInvisibleNodes = false;
+    if (!node->isEditable(false)) return haveInvisibleNodes;
+
+    haveInvisibleNodes = !node->visible(false);
 
     if (recursive) {
         // simple tail-recursive iteration
         KisNodeSP prevNode = node->lastChild();
         while(prevNode) {
-            clearDevices(prevNode, recursive);
+            haveInvisibleNodes |= clearDevices(prevNode, recursive);
             prevNode = prevNode->prevSibling();
         }
     }
@@ -979,6 +992,8 @@ void KisToolTransform::clearDevices(KisNodeSP node, bool \
                recursive)
      * applicable nodes right in the beginning of the processing
      */
     m_strokeData.addClearedNode(node);
+
+    return haveInvisibleNodes;
 }
 
 void KisToolTransform::transformDevices(KisNodeSP node, bool recursive)
diff --git a/krita/plugins/tools/tool_transform2/kis_tool_transform.h \
b/krita/plugins/tools/tool_transform2/kis_tool_transform.h index 567437b..165c230 \
                100644
--- a/krita/plugins/tools/tool_transform2/kis_tool_transform.h
+++ b/krita/plugins/tools/tool_transform2/kis_tool_transform.h
@@ -211,7 +211,7 @@ public Q_SLOTS:
     void imageTooBigRequested(bool value);
 
 private:
-    void clearDevices(KisNodeSP node, bool recursive);
+    bool clearDevices(KisNodeSP node, bool recursive);
     void transformDevices(KisNodeSP node, bool recursive);
 
     void startStroke(ToolTransformArgs::TransformMode mode);

_______________________________________________
Krita mailing list
kimageshop@kde.org
https://mail.kde.org/mailman/listinfo/kimageshop


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic