| Summary: | Adjustment still render inside of a hidden group | ||
|---|---|---|---|
| Product: | [Applications] krita | Reporter: | Nathan GDquest <nathan> |
| Component: | Filter Layers | Assignee: | Krita Bugs <krita-bugs-null> |
| Status: | RESOLVED FIXED | ||
| Severity: | normal | CC: | halla |
| Priority: | NOR | ||
| Version First Reported In: | 3.2.1 | ||
| Target Milestone: | --- | ||
| Platform: | Other | ||
| OS: | Microsoft Windows | ||
| Latest Commit: | https://commits.kde.org/krita/6169d822f47d9b4298d724dcc81fd459af060a7d | Version Fixed/Implemented In: | |
| Sentry Crash Report: | |||
|
Description
Nathan GDquest
2017-09-02 10:09:27 UTC
Hi Nathan, I can confirm the issue. Note: the group layer must be in pass-through mode. Another note: this patch _should_ help, but it doesn't:
diff --git a/libs/image/kis_base_node.cpp b/libs/image/kis_base_node.cpp
index 48d7e6adac..586d8bdb6d 100644
--- a/libs/image/kis_base_node.cpp
+++ b/libs/image/kis_base_node.cpp
@@ -224,7 +224,7 @@ bool KisBaseNode::visible(bool recursive) const
KisBaseNodeSP parentNode = parentCallback();
return recursive && isVisible && parentNode ?
- parentNode->visible() : isVisible;
+ parentNode->visible(recursive) : isVisible;
}
void KisBaseNode::setVisible(bool visible, bool loading)
diff --git a/libs/image/kis_base_node.h b/libs/image/kis_base_node.h
index 54a15c1df7..f4991ffeaa 100644
--- a/libs/image/kis_base_node.h
+++ b/libs/image/kis_base_node.h
@@ -341,6 +341,9 @@ public:
* @return true if this node is visible (i.e, active (except for
* selection masks where visible and active properties are
* different)) in the graph
+ *
+ * @param bool recursive if true, check whether all parents of
+ * this node are visible as well.
*/
virtual bool visible(bool recursive = false) const;
diff --git a/libs/image/kis_layer.cc b/libs/image/kis_layer.cc
index 0ca50e4fc5..c5f0aa706e 100644
--- a/libs/image/kis_layer.cc
+++ b/libs/image/kis_layer.cc
@@ -663,7 +663,7 @@ QRect KisLayer::updateProjection(const QRect& rect, KisNodeSP filthyNode)
QRect updatedRect = rect;
KisPaintDeviceSP originalDevice = original();
if (!rect.isValid() ||
- !visible() ||
+ !visible(true) ||
!originalDevice) return QRect();
if (!needProjection() && !hasEffectMasks()) {
lines 1-40/40 (END)
We're really going to have to discuss this with Dmitry once he's done with his current work on making the pixel brush engine faster.
Git commit 43908f87d45b1a0b47965d96ab75ffb139340f0e by Dmitry Kazakov. Committed on 26/09/2017 at 14:47. Pushed by dkazakov into branch 'kazakov/multithreaded-brushes'. Don't recalculate an adjustment layer, which is in invisible passthrough group The great care should be taken when we show that window again. We should fully recalculate it. Previously, the layer was considered to be in "always-ready" state. M +15 -3 libs/image/commands/kis_node_property_list_command.cpp M +2 -2 libs/image/kis_async_merger.cpp https://commits.kde.org/krita/43908f87d45b1a0b47965d96ab75ffb139340f0e Git commit 6169d822f47d9b4298d724dcc81fd459af060a7d by Dmitry Kazakov. Committed on 26/09/2017 at 14:48. Pushed by dkazakov into branch 'master'. Don't recalculate an adjustment layer, which is in invisible passthrough group The great care should be taken when we show that window again. We should fully recalculate it. Previously, the layer was considered to be in "always-ready" state. M +15 -3 libs/image/commands/kis_node_property_list_command.cpp M +2 -2 libs/image/kis_async_merger.cpp https://commits.kde.org/krita/6169d822f47d9b4298d724dcc81fd459af060a7d |