summaryrefslogtreecommitdiffstats
path: root/src/widgets/styles
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets/styles')
-rw-r--r--src/widgets/styles/qcommonstyle.cpp19
-rw-r--r--src/widgets/styles/qstylesheetstyle.cpp19
2 files changed, 20 insertions, 18 deletions
diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp
index 75476faeeb..174e94e63d 100644
--- a/src/widgets/styles/qcommonstyle.cpp
+++ b/src/widgets/styles/qcommonstyle.cpp
@@ -83,12 +83,6 @@
# include "private/qtextengine_p.h"
#endif
-#ifdef Q_WS_X11
-# include <private/qt_x11_p.h>
-#elif defined(Q_WS_MAC)
-# include <private/qt_cocoa_helpers_mac_p.h>
-#endif
-
#include <private/qstylehelper_p.h>
QT_BEGIN_NAMESPACE
@@ -4920,12 +4914,8 @@ int QCommonStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget
break;
case SH_DialogButtonLayout:
ret = QDialogButtonBox::WinLayout;
-#ifdef Q_WS_X11
- if (X11->desktopEnvironment == DE_KDE)
- ret = QDialogButtonBox::KdeLayout;
- else if (X11->desktopEnvironment == DE_GNOME)
- ret = QDialogButtonBox::GnomeLayout;
-#endif
+ if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme())
+ ret = theme->themeHint(QPlatformTheme::DialogButtonBoxLayout).toInt();
break;
case SH_ComboBox_PopupFrameStyle:
ret = QFrame::StyledPanel | QFrame::Plain;
@@ -4934,10 +4924,9 @@ int QCommonStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget
ret = Qt::LinksAccessibleByMouse;
break;
case SH_DialogButtonBox_ButtonsHaveIcons:
-#ifdef Q_WS_X11
- return true;
-#endif
ret = 0;
+ if (const QPlatformTheme *theme = QGuiApplicationPrivate::platformTheme())
+ ret = theme->themeHint(QPlatformTheme::DialogButtonBoxButtonsHaveIcons).toBool() ? 1 : 0;
break;
case SH_SpellCheckUnderlineStyle:
ret = QTextCharFormat::WaveUnderline;
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<QIcon::Mode>(entry.mode),
+ static_cast<QIcon::State>(entry.state));
+ }
+ return icon;
+}
+
QRenderRule::QRenderRule(const QVector<Declaration> &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<Declaration> &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);