[graphics/krita/krita/6.0] plugins/dockers/widegamutcolorselector: Fix wide gamut color selector preview popup not hiding
Dmitry Kazakov <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit 462554588a47fbb35511dc273232e342dbbe2927 by Dmitry Kazakov, on behalf of Luna Lovecraft.
Committed on 27/07/2026 at 12:15.
Pushed by dkazakov into branch 'krita/6.0'.
Fix wide gamut color selector preview popup not hiding
Before this commit when the wide gamut color selector is borrowed by the
popup palette, the color preview popup would not disappear properly.
BUG:522620
M +14 -6 plugins/dockers/widegamutcolorselector/WGColorSelectorDock.cpp
M +1 -1 plugins/dockers/widegamutcolorselector/WGColorSelectorDock.h
https://invent.kde.org/graphics/krita/-/commit/462554588a47fbb35511dc273232e342dbbe2927
diff --git a/plugins/dockers/widegamutcolorselector/WGColorSelectorDock.cpp b/plugins/dockers/widegamutcolorselector/WGColorSelectorDock.cpp
index b68da40fcc3..a723bfb6d71 100644
--- a/plugins/dockers/widegamutcolorselector/WGColorSelectorDock.cpp
+++ b/plugins/dockers/widegamutcolorselector/WGColorSelectorDock.cpp
@@ -48,6 +48,8 @@ WGColorSelectorDock::WGColorSelectorDock()
setWindowTitle(i18n("Wide Gamut Color Selector"));
QWidget *mainWidget = new QWidget();
+ mainWidget->installEventFilter(this);
+
m_mainWidgetLayout = new QVBoxLayout(mainWidget);
m_verticalElementsLayout = new QHBoxLayout();
m_selectorAreaLayout = new QBoxLayout(QBoxLayout::TopToBottom);
@@ -155,12 +157,6 @@ void WGColorSelectorDock::setChannelValues(const QVector4D &values)
m_pendingFgUpdate = false;
}
-void WGColorSelectorDock::leaveEvent(QEvent *event)
-{
- Q_UNUSED(event)
- m_colorTooltip->hide();
-}
-
void WGColorSelectorDock::setCanvas(KoCanvasBase *canvas)
{
if (m_canvas.data() == canvas)
@@ -486,6 +482,18 @@ void WGColorSelectorDock::slotShowGamutMaskToolbar(bool show)
m_gamutToolbar->setVisible(show);
}
+bool WGColorSelectorDock::eventFilter(QObject *obj, QEvent *e)
+{
+ Q_UNUSED(obj);
+
+ // Get the leave event of the inner widget, for when the docker is borrowed and doesn't properly handle leave events
+ if (e->type() == QEvent::Leave) {
+ m_colorTooltip->hide();
+ }
+
+ return false;
+}
+
namespace WGConfig {
const NumericSetting<WGColorSelectorDock::ColorSpaceSource> colorSpaceSource
{
diff --git a/plugins/dockers/widegamutcolorselector/WGColorSelectorDock.h b/plugins/dockers/widegamutcolorselector/WGColorSelectorDock.h
index d820973e338..423c1a2236b 100644
--- a/plugins/dockers/widegamutcolorselector/WGColorSelectorDock.h
+++ b/plugins/dockers/widegamutcolorselector/WGColorSelectorDock.h
@@ -60,10 +60,10 @@ public:
*/
void setChannelValues(const QVector4D &values);
protected:
- void leaveEvent(QEvent *event) override;
void setCanvas(KoCanvasBase *canvas) override;
void unsetCanvas() override;
void setViewManager(KisViewManager* viewManager) override;
+ bool eventFilter(QObject* obj, QEvent *ev) override;
void disconnectFromCanvas();
void updateLayout();