diff --git a/src/plugins/qmldesigner/components/propertyeditor/colorwidget.cpp b/src/plugins/qmldesigner/components/propertyeditor/colorwidget.cpp index 69d51201ec3bfe0575c7808ef408e74ac877fae8..f316ab9db2d38c8e9f86e7134c6158d71c39afe7 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/colorwidget.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/colorwidget.cpp @@ -84,7 +84,8 @@ static inline QColor properColor(const QString &str) lalpha = 255; } QColor lcolor(lcolorStr); - lcolor.setAlpha(lalpha); + if (lcolorStr.contains('#')) + lcolor.setAlpha(lalpha); return lcolor; } @@ -109,6 +110,18 @@ static inline bool isColorString(const QString &colorString) return ok; } +static inline QPixmap tilePixMap(int size) +{ + const int checkerbordSize= size; + QPixmap tilePixmap(checkerbordSize * 2, checkerbordSize * 2); + tilePixmap.fill(Qt::white); + QPainter tilePainter(&tilePixmap); + QColor color(220, 220, 220); + tilePainter.fillRect(0, 0, checkerbordSize, checkerbordSize, color); + tilePainter.fillRect(checkerbordSize, checkerbordSize, checkerbordSize, checkerbordSize, color); + return tilePixmap; +} + namespace QmlDesigner { void ColorWidget::registerDeclarativeTypes() { @@ -131,18 +144,24 @@ void ColorButton::setColor(const QString &colorStr) emit colorChanged(); } +QColor ColorButton::convertedColor() const +{ + return properColor(m_colorString); +} + void ColorButton::paintEvent(QPaintEvent *event) { QToolButton::paintEvent(event); if (!isEnabled()) return; - QColor color(m_colorString); + QColor color = properColor(m_colorString); QPainter p(this); - QRect r(0, 0, width() - 2, height() - 2); + QRect r(0, 0, width() - 2, height() - 2); + p.drawTiledPixmap(r.adjusted(1, 1, -1, -1), tilePixMap(9)); if (isEnabled()) p.setBrush(color); else @@ -592,6 +611,9 @@ void GradientLine::paintEvent(QPaintEvent *event) p.setPen(QColor(0x444444)); p.drawRect(9, 31, width() - 14, height() - 32); + + p.drawTiledPixmap(9, 31, width() - 16, height() - 34, tilePixMap(8)); + p.setBrush(linearGradient); p.setPen(QColor(0x222222)); p.drawRect(8, 30, width() - 14, height() - 32); diff --git a/src/plugins/qmldesigner/components/propertyeditor/colorwidget.h b/src/plugins/qmldesigner/components/propertyeditor/colorwidget.h index 84517178643d9141c33cbe7be00a61fa2ae8f279..cb18a5f8140f51854572332a7efafc0e6dde518c 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/colorwidget.h +++ b/src/plugins/qmldesigner/components/propertyeditor/colorwidget.h @@ -63,6 +63,7 @@ public: void setColor(const QString &colorStr); QString color() const { return m_colorString; } + QColor convertedColor() const; bool noColor() const { return m_noColor; } void setNoColor(bool f) { m_noColor = f; update(); } bool showArrow() const { return m_showArrow; } @@ -212,7 +213,7 @@ private: void setup(); void updateGradient(); int currentColorIndex() const { return m_colorIndex; } - void setCurrentIndex(int i); + void setCurrentIndex(int i); QColor m_activeColor; QmlItemNode m_itemNode;