diff options
author | Jędrzej Nowacki <jedrzej.nowacki@digia.com> | 2014-03-28 14:24:45 +0100 |
---|---|---|
committer | Lars Knoll <lars.knoll@theqtcompany.com> | 2015-11-30 12:10:49 +0000 |
commit | 2e00500b9f32f25a15563a4fd35375ead12c14a7 (patch) | |
tree | 17d9069f5cd546c2d274cd204aefa74c67b84b25 /src | |
parent | 10379e48f154dedb95e2e5bfc17085f8a5183dd2 (diff) |
Fix conversion QVariant(QColor) to QString.
QVariant was using QColor::name() to convert a color to string, which by
default loses alpha value. The patch is fixing the problem by always
including the alpha value in the string when required.
[ChangeLog][Core][Variant] QVariant(QColor)::toString() uses
QColor::HexArgb format when the alpha component is different from 1.
Task-number: QTBUG-37851
Change-Id: I887460c1ea151180ba99d64dd873ba9d6e2268f2
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/kernel/qguivariant.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/gui/kernel/qguivariant.cpp b/src/gui/kernel/qguivariant.cpp index ce4a0ec09e..a0769ca671 100644 --- a/src/gui/kernel/qguivariant.cpp +++ b/src/gui/kernel/qguivariant.cpp @@ -175,7 +175,8 @@ static bool convert(const QVariant::Private *d, int t, switch (t) { case QVariant::ByteArray: if (d->type == QVariant::Color) { - *static_cast<QByteArray *>(result) = v_cast<QColor>(d)->name().toLatin1(); + const QColor *c = v_cast<QColor>(d); + *static_cast<QByteArray *>(result) = c->name(c->alpha() != 255 ? QColor::HexArgb : QColor::HexRgb).toLatin1(); return true; } break; @@ -190,9 +191,11 @@ static bool convert(const QVariant::Private *d, int t, case QVariant::Font: *str = v_cast<QFont>(d)->toString(); return true; - case QVariant::Color: - *str = v_cast<QColor>(d)->name(); + case QVariant::Color: { + const QColor *c = v_cast<QColor>(d); + *str = c->name(c->alpha() != 255 ? QColor::HexArgb : QColor::HexRgb); return true; + } default: break; } |