Bug 410135 - L or GSM (Local or Global Selection Mask) is not updated on-canvas after Invert Selection
Summary: L or GSM (Local or Global Selection Mask) is not updated on-canvas after Inve...
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Layer Stack (show other bugs)
Version: nightly build (please specify the git hash!)
Platform: Debian stable Linux
: NOR normal
Target Milestone: ---
Assignee: vanyossi
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-07-23 10:52 UTC by Ahab Greybeard
Modified: 2019-08-23 04:25 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
Safe Assert error after LSM image inversion (34.15 KB, image/png)
2019-07-25 12:29 UTC, Ahab Greybeard
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Ahab Greybeard 2019-07-23 10:52:19 UTC
SUMMARY
This is observed on the latest nightly appimage 4.3.0-prealpha (git 585f1c6) and back to the 4.2.1 build. The LSM or GSM is not updated on-canvas if Select -> Invert Selection (Ctrl+Shift+I) is done. The Layers Docker thumbnail for the LSM or GSM is updated (often quite slowly).

STEPS TO REPRODUCE
1. Create a new file and add an LSM to a layer or a GSM to the image.
2. Select the LSM or GSM and use the selection outline tools (or use monochrome paint) to create a selection which shows as red/white.
3. Do an Invert Selection operation.

OBSERVED RESULT
The on-canvas display of the LSM or GSM is not updated to show the inversion. You have to toggle the LSM or GSM off/on or select a different layer (then go back to the LSM or GSM) before the on-canvas display is updated.

While the LSM or GSM has been inverted but not updated on-canvas, you can paint on it and the paint operation shows the correct appearance locally at the painted locations.

EXPECTED RESULT
The LSM or GSM on-canvas appearance should update after the Invert operation.

SOFTWARE/OS VERSIONS
 Version: 4.3.0-prealpha (git 585f1c6)
 Languages: en_GB, en
 Hidpi: true

Qt

  Version (compiled): 5.12.4
  Version (loaded): 5.12.4

OS Information

  Build ABI: x86_64-little_endian-lp64
  Build CPU: x86_64
  CPU: x86_64
  Kernel Type: linux
  Kernel Version: 4.19.0-5-amd64
  Pretty Productname: Debian GNU/Linux 10 (buster)
  Product Type: debian
  Product Version: 10


ADDITIONAL INFORMATION
Comment 1 vanyossi 2019-07-25 01:44:07 UTC
I can confirm this issue.
If the active layer is the mask, after inverting the image the mask is not updated at all.
Comment 2 Ahab Greybeard 2019-07-25 12:29:52 UTC
Created attachment 121724 [details]
Safe Assert error after LSM image inversion

Apart from painting on it, it didn't occur to me to try other 'image' operations on a LSM.
I tried Blur, Levels, Threshold and these all worked fine.
I also tried Invert and that worked fine too with 4.3.0-prealpha (git 600ee12)

With Invert, over several sessions, I had one Safe Assert error as shown in the attachment to this comment. I pressed Ignore and carried on and everything was fine.
Comment 3 vanyossi 2019-08-23 04:25:06 UTC
Git commit 7626a015269510c13bf92268d00ad3fb13107e96 by Ivan Yossi.
Committed on 23/08/2019 at 04:25.
Pushed by ivany into branch 'master'.

Repaint selection after invert when mask visible

Added a repaint step for selection transactions to repaint the
selection layer after every filter selection operation

commited on behalf of: Dmitry Kazakov

M  +24   -10   libs/image/kis_selection_filters.cpp
M  +10   -9    libs/image/kis_selection_filters.h
M  +10   -0    libs/image/kis_transaction_data.cpp
M  +4    -2    libs/image/layerstyles/kis_ls_utils.cpp
M  +8    -8    libs/libkis/Selection.cpp
M  +1    -0    libs/ui/actions/kis_selection_action_factories.cpp
M  +2    -1    libs/ui/operations/kis_filter_selection_operation.cpp

https://invent.kde.org/kde/krita/commit/7626a015269510c13bf92268d00ad3fb13107e96