diff options
Diffstat (limited to 'src/widgets/styles')
-rw-r--r-- | src/widgets/styles/qcommonstyle.cpp | 19 | ||||
-rw-r--r-- | src/widgets/styles/qstylesheetstyle.cpp | 19 |
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); |