From 5a0eb4e768435b9ce32b074e620fca33be4df2fb Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Mon, 27 Feb 2012 12:38:04 +0100 Subject: Fix icon loading in style sheets. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit QIcon was moved to QtWidgets, while the parser is still in QtGui. Introduce a QCss::IconValue struct that contains the icon data and convert to QIcon in widgets. Change-Id: I09ac8a12a4b02bdca91ee2e8fcc28c86b5a001e7 Reviewed-by: Morten Johan Sørvig --- src/gui/text/qcssparser.cpp | 40 ++++++++++++++-------------------------- 1 file changed, 14 insertions(+), 26 deletions(-) (limited to 'src/gui/text/qcssparser.cpp') diff --git a/src/gui/text/qcssparser.cpp b/src/gui/text/qcssparser.cpp index 38070458b7..fd01934eae 100644 --- a/src/gui/text/qcssparser.cpp +++ b/src/gui/text/qcssparser.cpp @@ -1272,11 +1272,9 @@ void ValueExtractor::extractFont() extractFont(&f, &dummy); } -bool ValueExtractor::extractImage(QIcon *icon, Qt::Alignment *a, QSize *size) +bool ValueExtractor::extractImage(QCss::IconValue *icon, Qt::Alignment *a, QSize *size) { bool hit = false; -#if 0 - // ### Qt5 for (int i = 0; i < declarations.count(); ++i) { const Declaration &decl = declarations.at(i); switch (decl.d->propertyId) { @@ -1297,7 +1295,6 @@ bool ValueExtractor::extractImage(QIcon *icon, Qt::Alignment *a, QSize *size) } hit = true; } -#endif return hit; } @@ -1646,30 +1643,27 @@ void Declaration::borderImageValue(QString *image, int *cuts, *h = *v; } -#if 0 -// ### Qt 5 -QIcon Declaration::iconValue() const +IconValue Declaration::iconValue() const { if (d->parsed.isValid()) - return qvariant_cast(d->parsed); + return qvariant_cast(d->parsed); - QIcon icon; + IconValue icon; for (int i = 0; i < d->values.count();) { const Value &value = d->values.at(i++); if (value.type != Value::Uri) break; - QString uri = value.variant.toString(); - QIcon::Mode mode = QIcon::Normal; - QIcon::State state = QIcon::Off; + IconValue::IconEntry entry; + entry.uri = value.variant.toString(); for (int j = 0; j < 2; j++) { if (i != d->values.count() && d->values.at(i).type == Value::KnownIdentifier) { switch (d->values.at(i).variant.toInt()) { - case Value_Disabled: mode = QIcon::Disabled; break; - case Value_Active: mode = QIcon::Active; break; - case Value_Selected: mode = QIcon::Selected; break; - case Value_Normal: mode = QIcon::Normal; break; - case Value_On: state = QIcon::On; break; - case Value_Off: state = QIcon::Off; break; + case Value_Disabled: entry.mode = IconValue::Disabled; break; + case Value_Active: entry.mode = IconValue::Active; break; + case Value_Selected: entry.mode = IconValue::Selected; break; + case Value_Normal: entry.mode = IconValue::Normal; break; + case Value_On: entry.state = IconValue::On; break; + case Value_Off: entry.state = IconValue::Off; break; default: break; } ++i; @@ -1677,12 +1671,7 @@ QIcon Declaration::iconValue() const break; } } - - // QIcon is soo broken - if (icon.isNull()) - icon = QIcon(uri); - else - icon.addPixmap(uri, mode, state); + icon.entries.push_back(entry); if (i == d->values.count()) break; @@ -1691,10 +1680,9 @@ QIcon Declaration::iconValue() const i++; } - d->parsed = QVariant::fromValue(icon); + d->parsed = QVariant::fromValue(icon); return icon; } -#endif /////////////////////////////////////////////////////////////////////////////// // Selector -- cgit v1.2.3