diff options
Diffstat (limited to 'src/widgets/dialogs/qcolordialog.cpp')
-rw-r--r-- | src/widgets/dialogs/qcolordialog.cpp | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/src/widgets/dialogs/qcolordialog.cpp b/src/widgets/dialogs/qcolordialog.cpp index b92e1a24ad..33b374c1bc 100644 --- a/src/widgets/dialogs/qcolordialog.cpp +++ b/src/widgets/dialogs/qcolordialog.cpp @@ -627,6 +627,7 @@ public: QColorPicker(QWidget* parent); ~QColorPicker(); + void setCrossVisible(bool visible); public slots: void setCol(int h, int s); @@ -650,6 +651,7 @@ private: void setCol(const QPoint &pt); QPixmap pix; + bool crossVisible; }; static int pWidth = 220; @@ -805,6 +807,7 @@ void QColorPicker::setCol(const QPoint &pt) QColorPicker::QColorPicker(QWidget* parent) : QFrame(parent) + , crossVisible(true) { hue = 0; sat = 0; setCol(150, 255); @@ -817,6 +820,14 @@ QColorPicker::~QColorPicker() { } +void QColorPicker::setCrossVisible(bool visible) +{ + if (crossVisible != visible) { + crossVisible = visible; + update(); + } +} + QSize QColorPicker::sizeHint() const { return QSize(pWidth + 2*frameWidth(), pHeight + 2*frameWidth()); @@ -858,12 +869,13 @@ void QColorPicker::paintEvent(QPaintEvent* ) QRect r = contentsRect(); p.drawPixmap(r.topLeft(), pix); - QPoint pt = colPt() + r.topLeft(); - p.setPen(Qt::black); - - p.fillRect(pt.x()-9, pt.y(), 20, 2, Qt::black); - p.fillRect(pt.x(), pt.y()-9, 2, 20, Qt::black); + if (crossVisible) { + QPoint pt = colPt() + r.topLeft(); + p.setPen(Qt::black); + p.fillRect(pt.x()-9, pt.y(), 20, 2, Qt::black); + p.fillRect(pt.x(), pt.y()-9, 2, 20, Qt::black); + } } void QColorPicker::resizeEvent(QResizeEvent *ev) @@ -1578,6 +1590,7 @@ void QColorDialogPrivate::_q_pickScreenColor() void QColorDialogPrivate::releaseColorPicking() { Q_Q(QColorDialog); + cp->setCrossVisible(true); q->removeEventFilter(colorPickingEventFilter); q->releaseMouse(); q->releaseKeyboard(); @@ -2174,6 +2187,9 @@ void QColorDialog::changeEvent(QEvent *e) bool QColorDialogPrivate::handleColorPickingMouseMove(QMouseEvent *e) { + // If the cross is visible the grabbed color will be black most of the times + cp->setCrossVisible(!cp->geometry().contains(e->pos())); + const QPoint globalPos = e->globalPos(); const QColor color = grabScreenColor(globalPos); // QTBUG-39792, do not change standard, custom color selectors while moving as |