[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [krita/krita-testing-wolthera] libs/ui/widgets: change kodualcolorbutton about to simply code.
From: Wolthera van Hovell tot Westerflier <griffinvalley () gmail ! com>
Date: 2016-08-20 17:26:00
Message-ID: E1bbA1w-0005ay-6z () code ! kde ! org
[Download RAW message or body]
Git commit 8c2914254e053f314b803b4f064c5534a7aeb4ba by Wolthera van Hovell tot Westerflier.
Committed on 20/08/2016 at 17:24.
Pushed by woltherav into branch 'krita-testing-wolthera'.
change kodualcolorbutton about to simply code.
This doesn't prevent a crash when closing all available documents, sadly.
M +18 -4 libs/ui/widgets/KoDualColorButton.cpp
M +9 -0 libs/ui/widgets/KoDualColorButton.h
http://commits.kde.org/krita/8c2914254e053f314b803b4f064c5534a7aeb4ba
diff --git a/libs/ui/widgets/KoDualColorButton.cpp b/libs/ui/widgets/KoDualColorButton.cpp
index 4f086ab..994e0acd 100644
--- a/libs/ui/widgets/KoDualColorButton.cpp
+++ b/libs/ui/widgets/KoDualColorButton.cpp
@@ -165,7 +165,21 @@ void KoDualColorButton::setDisplayRenderer(const KoColorDisplayRendererInterface
if (displayRenderer) {
d->displayRenderer = displayRenderer;
d->colorSelectorDialog->setDisplayRenderer(displayRenderer);
+ } else {
+ d->displayRenderer = KoDumbColorDisplayRenderer::instance();
+ }
+}
+
+QColor KoDualColorButton::getColorFromDisplayRenderer(KoColor c)
+{
+ QColor col;
+ if (d->displayRenderer) {
+ c.convertTo(d->displayRenderer->getPaintingColorSpace());
+ col = d->displayRenderer->toQColor(c);
+ } else {
+ col = c.toQColor();
}
+ return col;
}
void KoDualColorButton::setPopDialog( bool popDialog )
@@ -189,8 +203,8 @@ void KoDualColorButton::paintEvent(QPaintEvent *)
metrics( foregroundRect, backgroundRect );
QBrush defBrush = palette().brush( QPalette::Button );
- QBrush foregroundBrush( d->displayRenderer->toQColor(d->foregroundColor), Qt::SolidPattern );
- QBrush backgroundBrush( d->displayRenderer->toQColor(d->backgroundColor), Qt::SolidPattern );
+ QBrush foregroundBrush( getColorFromDisplayRenderer(d->foregroundColor), Qt::SolidPattern );
+ QBrush backgroundBrush( getColorFromDisplayRenderer(d->backgroundColor), Qt::SolidPattern );
qDrawShadeRect( &painter, backgroundRect, palette(), false, 1, 0,
isEnabled() ? &backgroundBrush : &defBrush );
@@ -286,8 +300,8 @@ void KoDualColorButton::mouseMoveEvent( QMouseEvent *event )
if ( event->x() >= d->dragPosition.x() + delay || event->x() <= d->dragPosition.x() - delay ||
event->y() >= d->dragPosition.y() + delay || event->y() <= d->dragPosition.y() - delay ) {
KColorMimeData::createDrag( d->tmpSelection == Foreground ?
- d->displayRenderer->toQColor(d->foregroundColor) :
- d->displayRenderer->toQColor(d->backgroundColor),
+ getColorFromDisplayRenderer(d->foregroundColor) :
+ getColorFromDisplayRenderer(d->backgroundColor),
this )->start();
d->dragFlag = true;
}
diff --git a/libs/ui/widgets/KoDualColorButton.h b/libs/ui/widgets/KoDualColorButton.h
index e98e82d..675665c 100644
--- a/libs/ui/widgets/KoDualColorButton.h
+++ b/libs/ui/widgets/KoDualColorButton.h
@@ -120,6 +120,15 @@ class KRITAWIDGETS_EXPORT KoDualColorButton : public QWidget
void setDisplayRenderer(const KoColorDisplayRendererInterface *displayRenderer);
/**
+ * @brief getColorFromDisplayRenderer
+ * convenience function to get the right qcolor from the display renderer, including checking
+ * whether the display renderer actually exists.
+ * @param c the kocolor to convert.
+ * @return the qcolor to use for display.
+ */
+ QColor getColorFromDisplayRenderer(KoColor c);
+
+ /**
* Sets if a dialog with a color chooser should be popped up when clicking
* If you set this to false then you could connect to the pleasePopDialog signal
* and pop your own dialog. Just set the current color afterwards.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic