Bug 458913 - Changing colours of vector objects - colour picker goes crazy
Summary: Changing colours of vector objects - colour picker goes crazy
Status: RESOLVED FIXED
Alias: None
Product: krita
Classification: Applications
Component: Color Selectors (show other bugs)
Version: git master (please specify the git hash!)
Platform: Microsoft Windows Microsoft Windows
: NOR normal
Target Milestone: ---
Assignee: sh_zam
URL:
Keywords:
: 459062 (view as bug list)
Depends on:
Blocks:
 
Reported: 2022-09-09 08:29 UTC by Hologram
Modified: 2022-10-24 05:01 UTC (History)
2 users (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Hologram 2022-09-09 08:29:14 UTC
SUMMARY
***

STEPS TO REPRODUCE
1. Create a vector layer
2. Create a vector object
3. Go to the toolbar and change the fore- or background colour.

Alternatively, use two mid-grey colours and swap the fore- and background colour in the toolbar. Notice how the colour becomes darker. 

OBSERVED RESULT
Notice that the picked colour no longer corresponds to the initial input.


EXPECTED RESULT
The colour should remain unaffected. 

SOFTWARE/OS VERSIONS
Windows: 10 19044
Krita has: 5.1 plus, has: ee19b42cab

For videos, see the Krita artists thread here: 
https://krita-artists.org/t/bug-colour-picker-is-behaving-weird-with-vector-shapes/46535
Comment 1 Hologram 2022-09-09 08:32:59 UTC
Oops, accidentally forgot the summary. 

Summary
***

When changing the colour of a vector object, the picked colour does not correspond to that the object acquires. The colour picker widget moves across the colour picker in the advanced colour selector. 

There are a multitude of ways to invoke this bug, so please refer to the Krita artists thread, where I posted the videos: https://krita-artists.org/t/bug-colour-picker-is-behaving-weird-with-vector-shapes/46535

I can even go to configure Krita and the vector object's colour will change.
Comment 2 sh_zam 2022-09-15 10:52:05 UTC
If you change to Edit Shapes tool, does any of this happen if you switch foreground-to-background color and vice versa?
Comment 3 Hologram 2022-09-20 10:51:34 UTC
Yes it does, as mentioned in the Krita-artists thread. The colour picker issue spiralling towards black seems to be related to the use of the Pigment.O plugin.
Comment 4 sh_zam 2022-10-11 07:37:06 UTC
Git commit 2264a44becad163a94ba26bdea3f054d205295b1 by Sharaf Zaman.
Committed on 11/10/2022 at 07:36.
Pushed by szaman into branch 'master'.

Fix Foreground-to-Background color switching of vector objects

If the fg-bg color was swapped rapidly enough, the resulting shape would
often have the same color (rather than it being swapped).

The reason for this being resourceManager would send us signal to change
both fg and bg, but if the delay between them is less than
colorChangedCompressor's timeout, the latter signal would be ignored.
Which would prevent the swapping from happening. The proper solutions
seem to be to either have a compressor at the source (which there does
seem to be) or have separate channel (ie different timers) for different
resources (bg, fg and gradient in *this* case).

M  +1    -1    libs/ui/widgets/KoFillConfigWidget.cpp

https://invent.kde.org/graphics/krita/commit/2264a44becad163a94ba26bdea3f054d205295b1
Comment 5 sh_zam 2022-10-12 09:39:51 UTC
*** Bug 459062 has been marked as a duplicate of this bug. ***
Comment 6 sh_zam 2022-10-24 05:01:00 UTC
Git commit 231726c6d7b3c5f9764b52d4d43c3c26b2d65ea4 by Sharaf Zaman.
Committed on 24/10/2022 at 04:51.
Pushed by szaman into branch 'krita/5.1'.

Fix Foreground-to-Background color switching of vector objects

If the fg-bg color was swapped rapidly enough, the resulting shape would
often have the same color (rather than it being swapped).

The reason for this being resourceManager would send us signal to change
both fg and bg, but if the delay between them is less than
colorChangedCompressor's timeout, the latter signal would be ignored.
Which would prevent the swapping from happening. The proper solutions
seem to be to either have a compressor at the source (which there does
seem to be) or have separate channel (ie different timers) for different
resources (bg, fg and gradient in *this* case).
(cherry picked from commit 2264a44becad163a94ba26bdea3f054d205295b1)

M  +1    -1    libs/ui/widgets/KoFillConfigWidget.cpp

https://invent.kde.org/graphics/krita/commit/231726c6d7b3c5f9764b52d4d43c3c26b2d65ea4