[graphics/krita] 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 9b17c75d9c1eb92f40c691357ac31f4331162669 by Dmitry Kazakov, on behalf of Luna Lovecraft.
Committed on 27/07/2026 at 12:05.
Pushed by dkazakov into branch 'master'.
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/9b17c75d9c1eb92f40c691357ac31f4331162669
diff --git a/plugins/dockers/widegamutcolorselector/WGColorSelectorDock.cpp b/plugins/dockers/widegamutcolorselector/WGColorSelectorDock.cpp
index 580cfdbe95e..84613f9d43c 100644
--- a/plugins/dockers/widegamutcolorselector/WGColorSelectorDock.cpp
+++ b/plugins/dockers/widegamutcolorselector/WGColorSelectorDock.cpp
@@ -49,6 +49,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);
@@ -158,12 +160,6 @@ void WGColorSelectorDock::setChannelValues(const QVector4D &values)
m_pendingFgUpdate = false;
}
-void WGColorSelectorDock::leaveEvent(QEvent *event)
-{
- Q_UNUSED(event)
- m_colorTooltip->hide();
-}
-
KisUniqueColorSet *WGColorSelectorDock::colorHistoryModel() const
{
return m_colorHistoryFromDocument && m_documentColorHistoryModel ? m_documentColorHistoryModel
@@ -514,6 +510,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 10da8aae39d..5a101ce67cf 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();