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/widgets/styles/qstylesheetstyle.cpp | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) (limited to 'src/widgets/styles/qstylesheetstyle.cpp') diff --git a/src/widgets/styles/qstylesheetstyle.cpp b/src/widgets/styles/qstylesheetstyle.cpp index 30c6ed5e74..5c0ee254d4 100644 --- a/src/widgets/styles/qstylesheetstyle.cpp +++ b/src/widgets/styles/qstylesheetstyle.cpp @@ -860,6 +860,19 @@ static QStyle::StandardPixmap subControlIcon(int pe) return QStyle::SP_CustomBase; } +static inline QIcon cssIconValueToIcon(const QCss::IconValue &iconValue) +{ + if (iconValue.entries.isEmpty()) + return QIcon(); + QIcon icon = QIcon(iconValue.entries.first().uri); + for (int i = 1; i < iconValue.entries.size(); ++i) { + const QCss::IconValue::IconEntry &entry = iconValue.entries.at(i); + icon.addPixmap(entry.uri, static_cast(entry.mode), + static_cast(entry.state)); + } + return icon; +} + QRenderRule::QRenderRule(const QVector &declarations, const QWidget *widget) : features(0), hasFont(false), pal(0), b(0), bg(0), bd(0), ou(0), geo(0), p(0), img(0), clipset(0) { @@ -919,11 +932,11 @@ QRenderRule::QRenderRule(const QVector &declarations, const QWidget if (v.extractPalette(&fg, &sfg, &sbg, &abg)) pal = new QStyleSheetPaletteData(fg, sfg, sbg, abg); - QIcon icon; alignment = Qt::AlignCenter; QSize size; - if (v.extractImage(&icon, &alignment, &size)) - img = new QStyleSheetImageData(icon, alignment, size); + QCss::IconValue iconValue; + if (v.extractImage(&iconValue, &alignment, &size)) + img = new QStyleSheetImageData(cssIconValueToIcon(iconValue), alignment, size); int adj = -255; hasFont = v.extractFont(&font, &adj); -- cgit v1.2.3