SUMMARY until you switch off its visualization and switch on again. STEPS TO REPRODUCE 1. Create a vector layer and create an object on it 2. Create a coat of paint and paint something 3. Group them 4. Transform the group (increasing or rotating) OBSERVED RESULT vector layer is no longer visible until its display (the eye icon) is turned off and back on. If any paint layer inherits the alpha it is also no longer visible. EXPECTED RESULT both the vector layer and the paint layer must be visible when the transformation is performed SOFTWARE/OS VERSIONS Windows: 10 Pro macOS: Linux/KDE Plasma: (available in About System) KDE Plasma Version: KDE Frameworks Version: Qt Version: ADDITIONAL INFORMATION
SUMMARY When transforming a group that combines vector layers and paint layers, the vector layers are no longer visible until you switch off its visualization and switch on again.
STEPS TO REPRODUCE 1. Create a vector layer and create an object on it 2. Create a paint layer and paint something on it 3. Group them 4. Transform the group (resizing or rotating) (some translator mistakes in first comment. I'm sorry)
This is happening as described in the bug report on 4.4.3, but on master is a little different, is seems the setDirty area is set to the last bounding box of the contents and if the vector shape position is outside the original position it dissapears... but only in the overview Docker. In the main canvas it sometimes draws the vector partially with an empty space vertically or horizontally, specially after rotation + scaling. This is all with Free transform, the other transformation ignore the vector layers (as patched afair). This issues does not happen if a transformation mask is used.
Git commit d54daf5d509a44c985dfa1dad2d38d5e18451145 by Dmitry Kazakov. Committed on 04/06/2021 at 08:35. Pushed by dkazakov into branch 'krita/4.3'. Fix failing update when transforming a shape layer with a Transform Tool That was actually a race condition, so it was rather difficult to reproduce. M +14 -7 plugins/tools/tool_transform2/strokes/transform_stroke_strategy.cpp https://invent.kde.org/graphics/krita/commit/d54daf5d509a44c985dfa1dad2d38d5e18451145
Git commit d67d92925cb67a43e091733329a8053e6585cae7 by Dmitry Kazakov. Committed on 04/06/2021 at 08:43. Pushed by dkazakov into branch 'master'. Fix failing update when transforming a shape layer with a Transform Tool That was actually a race condition, so it was rather difficult to reproduce. M +14 -7 plugins/tools/tool_transform2/strokes/transform_stroke_strategy.cpp https://invent.kde.org/graphics/krita/commit/d67d92925cb67a43e091733329a8053e6585cae7
Git commit 813ba5eb2eded3987e1292219dfa57dc267792fa by Dmitry Kazakov. Committed on 04/06/2021 at 11:44. Pushed by dkazakov into branch 'master'. Fix update artifacts when transforming vector layers There were two problems caused by asynchronous nature of vector layer transformations: 1) Shape layer transformation happens in the GUI thread asynchronously, therefore just ask for layer's extent() right after the transformation is not enough, this data is not yet ready. 2) Even when requesting shapeLayer->extent() for fetching oldDirtyRect, there is a race condition possible. If resetCache() has been called quite recently, then the extent will be null. Therefore the patch adds a special KisExternalLayer::theoreticalBoundingRect() that is supposed to overcome this limitation. M +5 -0 libs/image/kis_external_layer_iface.cc M +7 -1 libs/image/kis_external_layer_iface.h M +5 -0 libs/ui/flake/kis_shape_layer.cc M +2 -0 libs/ui/flake/kis_shape_layer.h M +15 -2 plugins/tools/tool_transform2/strokes/inplace_transform_stroke_strategy.cpp https://invent.kde.org/graphics/krita/commit/813ba5eb2eded3987e1292219dfa57dc267792fa
Git commit 1ad3c805898a6d9ed00813310254d156ba17b852 by Dmitry Kazakov. Committed on 16/07/2021 at 07:34. Pushed by dkazakov into branch 'master'. Properly fix updates of shape layers on applying legacy transformation Two issues: 1) We need to explicitly ask shape layers to regenerate their projection and wait for that using a barrier. 2) It should happen inside the blocked-setdirty-calls block to make sure no intermediate results are visible to the user. M +15 -7 plugins/tools/tool_transform2/strokes/transform_stroke_strategy.cpp https://invent.kde.org/graphics/krita/commit/1ad3c805898a6d9ed00813310254d156ba17b852
Git commit 81d9f9c9e7ecb5cd2b677e5e35c4452f681f3f1c by Dmitry Kazakov. Committed on 16/07/2021 at 07:34. Pushed by dkazakov into branch 'master'. Revert "Fix failing update when transforming a shape layer with a Transform Tool" This patch creates flickering on applying a transform to a shape layer. This reverts commit d67d92925cb67a43e091733329a8053e6585cae7. M +7 -14 plugins/tools/tool_transform2/strokes/transform_stroke_strategy.cpp https://invent.kde.org/graphics/krita/commit/81d9f9c9e7ecb5cd2b677e5e35c4452f681f3f1c