Bug 407359

Summary: Subsequent transforms give a wrong bounding box.
Product: [Applications] krita Reporter: wolthera <griffinvalley>
Component: Tools/TransformAssignee: Dmitry Kazakov <dimula73>
Status: RESOLVED FIXED    
Severity: normal CC: halla
Priority: NOR    
Version First Reported In: git master (please specify the git hash!)   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: Video showing the issue.

Description wolthera 2019-05-09 10:47:47 UTC
Created attachment 119926 [details]
Video showing the issue.

SUMMARY
When applying the first transform to a transform mask, everything is fine, but editing the transform gives weird results.

STEPS TO REPRODUCE
1. Select a layer
2. Create a transform mask.
3. Transform with transform mask selected. Apply with enter.
4. Transform same transform mask again.

OBSERVED RESULT

The bounding box is messed up, the wrong size, the wrong location. Sometimes the bounding box is empty.

EXPECTED RESULT

To behave like 3.

Krita

 Version: 4.2.0-alpha (git f7bb78c)
 Languages: en_US, en_GB, nl
 Hidpi: true

Qt

  Version (compiled): 5.12.0
  Version (loaded): 5.12.0

OS Information

  Build ABI: x86_64-little_endian-lp64
  Build CPU: x86_64
  CPU: x86_64
  Kernel Type: linux
  Kernel Version: 4.15.0-48-generic
  Pretty Productname: KDE neon User Edition 5.15
  Product Type: neon
  Product Version: 18.04
Comment 1 Halla Rempt 2019-05-09 13:11:46 UTC
This also came with 0ed30208c97a8374b8c2b0b04f8d51b9b119d83b, so I'm assigning this to Dmitry, too.
Comment 2 Dmitry Kazakov 2019-05-24 08:54:03 UTC
Git commit 7a109ac2dcdd3784827995f69f84aa1576e20319 by Dmitry Kazakov.
Committed on 24/05/2019 at 08:53.
Pushed by dkazakov into branch 'master'.

Fix growing handles on Transform Masks

For transform masks we shouldn't use exactBounds(), which includes both
transformed and original rects, but a specially crafted sourceDataBounds()
method that includes only source data.
BACKPORT:krita/4.2

M  +13   -4    libs/image/kis_transform_mask.cpp
M  +1    -0    libs/image/kis_transform_mask.h
M  +5    -1    plugins/tools/tool_transform2/kis_tool_transform.cc

https://invent.kde.org/kde/krita/commit/7a109ac2dcdd3784827995f69f84aa1576e20319
Comment 3 Halla Rempt 2019-05-24 10:19:02 UTC
Git commit 0a0a2e64521bc1f7d7f6843fc3096e443762060c by Boudewijn Rempt, on behalf of Dmitry Kazakov.
Committed on 24/05/2019 at 10:17.
Pushed by rempt into branch 'krita/4.2'.

Fix growing handles on Transform Masks

For transform masks we shouldn't use exactBounds(), which includes both
transformed and original rects, but a specially crafted sourceDataBounds()
method that includes only source data.
BACKPORT:krita/4.2
(cherry picked from commit 7a109ac2dcdd3784827995f69f84aa1576e20319)

M  +13   -4    libs/image/kis_transform_mask.cpp
M  +1    -0    libs/image/kis_transform_mask.h
M  +5    -1    plugins/tools/tool_transform2/kis_tool_transform.cc

https://invent.kde.org/kde/krita/commit/0a0a2e64521bc1f7d7f6843fc3096e443762060c