Bug 402072

Summary: Palette Docker: Can't reselect colour easily
Product: [Applications] krita Reporter: Rebecca Breu <rebecca>
Component: DockersAssignee: Krita Bugs <krita-bugs-null>
Status: RESOLVED FIXED    
Severity: minor CC: freebox64
Priority: NOR    
Version: nightly build (please specify the git hash!)   
Target Milestone: ---   
Platform: Debian stable   
OS: Linux   
Latest Commit: Version Fixed In:

Description Rebecca Breu 2018-12-12 20:23:23 UTC
SUMMARY

Selected colour in Palette Docker can't be reselected easily. Tested on nightly build 6dc2f8a (Dec 11) and 1519ff6 (Nov 17).  

STEPS TO REPRODUCE
1. Click on a colour in the palette => colour gets selected as expected
2. Use Ctrl+click to pick a different colour from the canvas, or use a different colour from the advanced colour selector => new colour gets picked for painting, but the palette still has the old colour selected

OBSERVED RESULT

If you want the colour from step one back, you can't just click on it in the palette, since the palette still has it selected and clicking on the selected colour is a no-op. You have to select a different palette colour first.


EXPECTED RESULT

Clicking on the colour gives me the colour back. Either the palette colour needs to get deselected if I pick a colour via other means, or clicking on a selected colour shouldn't be a no-op.


SOFTWARE/OS VERSIONS
Linux/KDE Plasma: Debian Stable with Gnome
Qt Version: 5.7.1
Comment 1 mvowada 2018-12-12 21:40:40 UTC
(4.2.0-pre-alpha (git 95b09ea) appimage - Ubuntu 14.04)

Hi. I can reproduce the same behaviour:

    1. choose a color from the palette docker
    2. pick a 2nd color from the advanced selector.
    3. re-pick the first color from the palette

Actual Results: not possible to re-pick the first selected color from the palette.
Expected: just repick the same color?
Comment 2 Anna Medonosova 2018-12-22 15:15:44 UTC
Git commit b1c8ba60f0a246fb97a47cf25e6876194b145af0 by Anna Medonosova.
Committed on 22/12/2018 at 15:15.
Pushed by amedonosova into branch 'master'.

Palette Docker: bug 402072; color selection in the combobox

Summary:
This diff fixes two issues:

1, bug 402072, where the user is unable to reselect a previously
selected color from the palette after picking another color by other
means.

This is fixed by clearing currentIndex in KisPaletteView upon FG color
change in the resource provider. That way the swatch stays selected, so
the user knows which color they had selected before, but enables them to
reselect the color.

2, Another issue, probably originating from commit 69915f533a6: if the
user selects a color in the KisPaletteComboBox, nothing happens.

KisPaletteComboBox calls KisPaletteView::selectClosestColor() to select
the clicked color in the palette. However, from said commit, the
function is called only with specific setting on. I have added another
slot specifically for KisPaletteComboBox, which unconditionally calls
said function.

Reviewers: #krita, woltherav

Reviewed By: #krita, woltherav

Subscribers: woltherav

Tags: #krita

Differential Revision: https://phabricator.kde.org/D17728

M  +1    -1    libs/widgets/KisPaletteComboBox.cpp
M  +16   -0    libs/widgets/kis_palette_view.cpp
M  +12   -0    libs/widgets/kis_palette_view.h
M  +13   -1    plugins/dockers/palettedocker/palettedocker_dock.cpp
M  +4    -0    plugins/dockers/palettedocker/palettedocker_dock.h

https://commits.kde.org/krita/b1c8ba60f0a246fb97a47cf25e6876194b145af0
Comment 3 Anna Medonosova 2019-06-14 10:31:21 UTC
Git commit c06107d673357cb9e8cb56771106770b5bc0f75a by Anna Medonosova.
Committed on 14/06/2019 at 10:30.
Pushed by amedonosova into branch 'master'.

Fix 'Enforce palette colors' feature

Since the 'Enforce palette colors' is a feature of the internal color
selector, this commit moves the functionality from KisPaletteView to
KisDlgInternalColorSelector. Also, that way the color change is forced
only once upon foreground color change, preventing cycling signals and confusing color changes
(KisPaletteView can be used more than once with different color palettes).

Removes KisPaletteView::slotFGColorResourceChanged, the function is
obsolete: it was meant to solve bug 402072 that is now fixed in a better way.

BACKPORT:krita/4.2
Related: bug 408256

M  +7    -2    libs/widgets/KisDlgInternalColorSelector.cpp
M  +7    -13   libs/widgets/kis_palette_view.cpp
M  +8    -6    libs/widgets/kis_palette_view.h
M  +1    -1    plugins/dockers/palettedocker/palettedocker_dock.cpp

https://invent.kde.org/kde/krita/commit/c06107d673357cb9e8cb56771106770b5bc0f75a
Comment 4 Halla Rempt 2019-06-17 08:18:05 UTC
Git commit 188dbe65a9b17a109835508d5691e6d56c3768b3 by Boudewijn Rempt, on behalf of Anna Medonosova.
Committed on 17/06/2019 at 08:17.
Pushed by rempt into branch 'krita/4.2'.

Fix 'Enforce palette colors' feature

Since the 'Enforce palette colors' is a feature of the internal color
selector, this commit moves the functionality from KisPaletteView to
KisDlgInternalColorSelector. Also, that way the color change is forced
only once upon foreground color change, preventing cycling signals and confusing color changes
(KisPaletteView can be used more than once with different color palettes).

Removes KisPaletteView::slotFGColorResourceChanged, the function is
obsolete: it was meant to solve bug 402072 that is now fixed in a better way.

BACKPORT:krita/4.2
Related: bug 408256

M  +7    -2    libs/widgets/KisDlgInternalColorSelector.cpp
M  +7    -13   libs/widgets/kis_palette_view.cpp
M  +8    -6    libs/widgets/kis_palette_view.h
M  +1    -1    plugins/dockers/palettedocker/palettedocker_dock.cpp

https://invent.kde.org/kde/krita/commit/188dbe65a9b17a109835508d5691e6d56c3768b3