Bug 368312 - Movement on child layer of group layer with transparency mask is not reflected
Summary: Movement on child layer of group layer with transparency mask is not reflected
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Tools/Transform (show other bugs)
Version: 3.0
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Krita Bugs
URL:
Keywords:
: 376774 (view as bug list)
Depends on:
Blocks:
 
Reported: 2016-09-06 07:06 UTC by andrewlchronister
Modified: 2019-09-02 10:17 UTC (History)
5 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
(Video example) (799.83 KB, video/mp4)
2016-09-06 07:35 UTC, mvowada
Details

Note You need to log in before you can comment on or make changes to this bug.
Description andrewlchronister 2016-09-06 07:06:08 UTC
Encountered when using the Move Tool on a child layer of a group with a Transparency Mask. Movements did not appear to apply until the group was hidden and unhidden or the file saved.

Reproducible: Always

Steps to Reproduce:
1. Create a layer with some visible content
2. Create a group layer
3. Make the layer with the content be a child of the group layer
4. With the group layer selected, create a transparency mask layer
5. Select the child layer
6. Attempt to use the Move Tool to translate the child layer

Actual Results:  
Child layer does not appear to move. Hiding/unhiding parent layer or parent transparency mask forces and update so you can see the child layer's actual position (it does, in fact, move, but you can't see it until the update is forced)

Expected Results:  
Child layer should move as the tool is used

Using krita 3.0 installed with the default package manager in Manjaro linux in an otherwise standard installation of the distro.
Comment 1 mvowada 2016-09-06 07:35:36 UTC
Created attachment 100949 [details]
(Video example)

(krita-3.0.99.91-Beta-x86_64.appimage - Ubuntu 14.04)
I think I can confirm: moving layers of a group layer with transparency mask is not apparent on canvas.
Comment 2 Halla Rempt 2016-11-01 10:47:50 UTC
I can confirm as well.
Comment 3 Nicholas LaPointe 2017-02-23 19:20:02 UTC
*** Bug 376774 has been marked as a duplicate of this bug. ***
Comment 4 Юрий 2017-05-15 18:07:14 UTC
I can confirm too https://youtu.be/BhWWIYlobbk
Comment 5 hawaiigames 2017-09-03 18:40:45 UTC
I can confirm this bug as well.
(Krita 3.2.1 x64 Portable, on Windows 7 x64)
Comment 6 Halla Rempt 2019-05-09 13:35:23 UTC
Trying this on an image where the only paint layer is in a group gives an assert:

ASSERT: "fastBitBltPossible(src)" in file /home/boud/dev/krita/libs/image/kis_paint_device.cc, line 195

#0  0x00007fffeb453120 in raise () at /lib64/libc.so.6
#1  0x00007fffeb454701 in abort () at /lib64/libc.so.6
#2  0x00007fffec1411eb in qErrnoWarning(char const*, ...) () at /usr/lib64/libQt5Core.so.5
#3  0x00007fffec1409e1 in qt_assert_x(char const*, char const*, char const*, int) ()
    at /usr/lib64/libQt5Core.so.5
#4  0x00007ffff4d28da8 in KisPaintDevice::Private::prepareClone(KisSharedPtr<KisPaintDevice>)
    (this=<optimized out>, src=...) at /home/boud/dev/krita/libs/image/kis_paint_device.cc:195
#5  0x00007ffff4d1a921 in KisPaintDevice::prepareClone(KisSharedPtr<KisPaintDevice>)
    (this=0x7fff7883cc60, src=...) at /home/boud/dev/krita/libs/image/kis_paint_device.cc:1067
#6  0x00007ffff4cc62b8 in KisCachedPaintDevice::getDevice(KisSharedPtr<KisPaintDevice>)
    (prototype=..., this=<optimized out>, this=<optimized out>)
    at /home/boud/dev/krita/libs/image/kis_cached_paint_device.h:36
#7  0x00007ffff4cc62b8 in KisMask::mergeInMaskInternal(KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisSelection>, QRect const&, QRect const&, KisNode::PositionToFilthy) const
    (this=0x7fffd8008e50, projection=..., effectiveSelection=..., applyRect=..., preparedNeedRect=..., maskPos=<optimized out>) at /home/boud/dev/krita/libs/image/kis_mask.cc:321
#8  0x00007ffff4cc9709 in KisMask::apply(KisSharedPtr<KisPaintDevice>, QRect const&, QRect const&, KisNode::PositionToFilthy) const
    (this=0x7fffd8008e50, projection=..., applyRect=..., needRect=..., maskPos=maskPos@entry=KisNode::N_ABOVE_FILTHY) at /home/boud/dev/krita/libs/image/kis_mask.cc:304
#9  0x00007ffff4ca681a in KisLayer::applyMasks(KisSharedPtr<KisPaintDevice>, KisSharedPtr<KisPaintDevice>, QRect const&, KisSharedPtr<KisNode>, KisSharedPtr<KisNode>) const
    (this=this@entry=0xbd340c0, source=..., destination=..., requestedRect=..., filthyNode=..., lastNode=...)
    at /home/boud/dev/krita/libs/image/kis_layer.cc:816
#10 0x00007ffff4ca7226 in KisLayer::updateProjection(QRect const&, KisSharedPtr<KisNode>)
    (this=0xbd340c0, rect=..., filthyNode=...) at /home/boud/dev/krita/libs/image/kis_layer.cc:850
#11 0x00007ffff4cab55c in KisLayerProjectionPlane::recalculate(QRect const&, KisSharedPtr<KisNode>)
    (this=<optimized out>, rect=..., filthyNode=...)
    at /home/boud/dev/krita/libs/image/kis_layer_projection_plane.cpp:47
#12 0x00007ffff4c38339 in KisAsyncMerger::startMerge(KisBaseRectsWalker&, bool)
    (this=0x1ae85728, walker=..., notifyClones=<optimized out>)
    at /home/boud/dev/krita/libs/image/kis_async_merger.cpp:263
#13 0x00007ffff4e61464 in non-virtual thunk to KisUpdateJobItem::run() ()
    at /home/boud/dev/i-krita/lib64/libkritaimage.so.18
#14 0x00007fffec168fa2 in  () at /usr/lib64/libQt5Core.so.5
#15 0x00007fffec164832 in  () at /usr/lib64/libQt5Core.so.5
#16 0x00007fffea4fb569 in start_thread () at /lib64/libpthread.so.0
#17 0x00007fffeb51585f in clone () at /lib64/libc.so.6
(gdb)
Comment 7 Halla Rempt 2019-09-02 10:17:38 UTC
I've just retested, and this works for me now.