diff options
Diffstat (limited to 'src/widgets/styles')
-rw-r--r-- | src/widgets/styles/images/cleartext-16.png | bin | 0 -> 760 bytes | |||
-rw-r--r-- | src/widgets/styles/qcommonstyle.cpp | 35 | ||||
-rw-r--r-- | src/widgets/styles/qgtkstyle_p.cpp | 3 | ||||
-rw-r--r-- | src/widgets/styles/qstyle.cpp | 17 | ||||
-rw-r--r-- | src/widgets/styles/qstyle.h | 5 | ||||
-rw-r--r-- | src/widgets/styles/qstyle.qrc | 1 | ||||
-rw-r--r-- | src/widgets/styles/qstylesheetstyle.cpp | 32 | ||||
-rw-r--r-- | src/widgets/styles/qwindowsxpstyle.cpp | 6 |
8 files changed, 78 insertions, 21 deletions
diff --git a/src/widgets/styles/images/cleartext-16.png b/src/widgets/styles/images/cleartext-16.png Binary files differnew file mode 100644 index 0000000000..74133bafff --- /dev/null +++ b/src/widgets/styles/images/cleartext-16.png diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp index ba6c222820..539cc70eb7 100644 --- a/src/widgets/styles/qcommonstyle.cpp +++ b/src/widgets/styles/qcommonstyle.cpp @@ -65,6 +65,7 @@ #include <qtoolbar.h> #include <qtoolbutton.h> #include <qrubberband.h> +#include "qtreeview.h" #include <private/qcommonstylepixmaps_p.h> #include <private/qmath_p.h> #include <qdebug.h> @@ -5096,11 +5097,7 @@ int QCommonStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget ret = theme->themeHint(QPlatformTheme::ToolButtonStyle).toInt(); break; case SH_RequestSoftwareInputPanel: -#ifdef Q_OS_ANDROID ret = RSIP_OnMouseClick; -#else - ret = RSIP_OnMouseClickAndAlreadyFocused; -#endif break; case SH_ScrollBar_Transient: ret = false; @@ -5108,6 +5105,27 @@ int QCommonStyle::styleHint(StyleHint sh, const QStyleOption *opt, const QWidget case SH_Menu_SupportsSections: ret = false; break; +#ifndef QT_NO_TOOLTIP + case SH_ToolTip_WakeUpDelay: + ret = 700; + break; + case SH_ToolTip_FallAsleepDelay: + ret = 2000; + break; +#endif + case SH_Widget_Animate: +#ifndef QT_NO_TREEVIEW + if (qobject_cast<const QTreeView*>(widget)) { + ret = false; + } else +#endif + { + ret = true; + } + break; + case SH_Splitter_OpaqueResize: + ret = true; + break; default: ret = 0; break; @@ -5288,6 +5306,13 @@ QPixmap QCommonStyle::standardPixmap(StandardPixmap sp, const QStyleOption *opti } } break; + case SP_LineEditClearButton: { + QString themeName = rtl ? QStringLiteral("edit-clear-locationbar-ltr") : QStringLiteral("edit-clear-locationbar-rtl"); + if (!QIcon::hasThemeIcon(themeName)) + themeName = QStringLiteral("edit-clear"); + pixmap = QIcon::fromTheme(themeName).pixmap(16); + } + break; default: break; } @@ -5416,6 +5441,8 @@ QPixmap QCommonStyle::standardPixmap(StandardPixmap sp, const QStyleOption *opti return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-volume-16.png")); case SP_MediaVolumeMuted: return QPixmap(QLatin1String(":/qt-project.org/styles/commonstyle/images/media-volume-muted-16.png")); + case SP_LineEditClearButton: + return QPixmap(QStringLiteral(":/qt-project.org/styles/commonstyle/images/cleartext-16.png")); #endif // QT_NO_IMAGEFORMAT_PNG default: break; diff --git a/src/widgets/styles/qgtkstyle_p.cpp b/src/widgets/styles/qgtkstyle_p.cpp index 769d822108..c53a21e59a 100644 --- a/src/widgets/styles/qgtkstyle_p.cpp +++ b/src/widgets/styles/qgtkstyle_p.cpp @@ -756,8 +756,9 @@ void QGtkStylePrivate::removeWidgetFromMap(const QHashableLatin1Literal &path) WidgetMap *map = gtkWidgetMap(); WidgetMap::iterator it = map->find(path); if (it != map->end()) { - free(const_cast<char *>(it.key().data())); + char* keyData = const_cast<char *>(it.key().data()); map->erase(it); + free(keyData); } } diff --git a/src/widgets/styles/qstyle.cpp b/src/widgets/styles/qstyle.cpp index dccc9ff3ce..77f869f036 100644 --- a/src/widgets/styles/qstyle.cpp +++ b/src/widgets/styles/qstyle.cpp @@ -53,6 +53,7 @@ #endif #include <limits.h> +#include <algorithm> QT_BEGIN_NAMESPACE @@ -1894,6 +1895,19 @@ void QStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, \value SH_Menu_SupportsSections Determines if the style displays sections in menus or treat them as plain separators. Sections are separators with a text and icon hint. + \value SH_ToolTip_WakeUpDelay Determines the delay before a tooltip is shown, in milliseconds. + + \value SH_ToolTip_FallAsleepDelay Determines the delay (in milliseconds) before a new wake time is needed when + a tooltip is shown (notice: shown, not hidden). When a new wake isn't needed, a user-requested tooltip + will be shown nearly instantly. + + \value SH_Widget_Animate Determines if the widget should show animations or not, for example + a transition between checked and unchecked statuses in a checkbox. + This enum value has been introduced in Qt 5.2. + + \value SH_Splitter_OpaqueResize Determines if resizing is opaque + This enum value has been introduced in Qt 5.2 + \sa styleHint() */ @@ -1986,6 +2000,7 @@ void QStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment, \value SP_MediaSeekBackward Icon indicating that media should seek backward. \value SP_MediaVolume Icon indicating a volume control. \value SP_MediaVolumeMuted Icon indicating a muted volume control. + \value SP_LineEditClearButton Icon for a standard clear button in a QLineEdit. This enum value was added in Qt 5.2. \value SP_CustomBase Base value for custom standard pixmaps; custom values must be greater than this value. @@ -2323,7 +2338,7 @@ QDebug operator<<(QDebug debug, QStyle::State state) if (state & QStyle::State_Top) states << QLatin1String("Top"); if (state & QStyle::State_UpArrow) states << QLatin1String("UpArrow"); - qSort(states); + std::sort(states.begin(), states.end()); debug << states.join(QLatin1String(" | ")); debug << ')'; #else diff --git a/src/widgets/styles/qstyle.h b/src/widgets/styles/qstyle.h index beafad326e..bbb216bf92 100644 --- a/src/widgets/styles/qstyle.h +++ b/src/widgets/styles/qstyle.h @@ -698,6 +698,10 @@ public: SH_RequestSoftwareInputPanel, SH_ScrollBar_Transient, SH_Menu_SupportsSections, + SH_ToolTip_WakeUpDelay, + SH_ToolTip_FallAsleepDelay, + SH_Widget_Animate, + SH_Splitter_OpaqueResize, // Add new style hint values here SH_CustomBase = 0xf0000000 @@ -777,6 +781,7 @@ public: SP_MediaSeekBackward, SP_MediaVolume, SP_MediaVolumeMuted, + SP_LineEditClearButton, // do not add any values below/greater than this SP_CustomBase = 0xf0000000 }; diff --git a/src/widgets/styles/qstyle.qrc b/src/widgets/styles/qstyle.qrc index 28ad484032..c063ec5036 100644 --- a/src/widgets/styles/qstyle.qrc +++ b/src/widgets/styles/qstyle.qrc @@ -1,5 +1,6 @@ <RCC> <qresource prefix="/qt-project.org/styles/commonstyle"> + <file>images/cleartext-16.png</file> <file>images/filelink-16.png</file> <file>images/filelink-32.png</file> <file>images/filelink-128.png</file> diff --git a/src/widgets/styles/qstylesheetstyle.cpp b/src/widgets/styles/qstylesheetstyle.cpp index be89abf2b2..85520d3c40 100644 --- a/src/widgets/styles/qstylesheetstyle.cpp +++ b/src/widgets/styles/qstylesheetstyle.cpp @@ -1096,7 +1096,7 @@ void QRenderRule::fixupBorder(int nativeWidth) bd->borders[i] = nativeWidth; // intentional fall through default: - if (!bd->colors[i].style() != Qt::NoBrush) // auto-acquire 'color' + if (bd->colors[i].style() == Qt::NoBrush) // auto-acquire 'color' bd->colors[i] = color; break; } @@ -4810,10 +4810,22 @@ QSize QStyleSheetStyle::sizeFromContents(ContentsType ct, const QStyleOption *op switch (ct) { case CT_SpinBox: // ### hopelessly broken QAbstractSpinBox (part 1) - if (rule.hasBox() || !rule.hasNativeBorder()) - return csz; - return rule.baseStyleCanDraw() ? baseStyle()->sizeFromContents(ct, opt, sz, w) - : QWindowsStyle::sizeFromContents(ct, opt, sz, w); + if (const QStyleOptionSpinBox *spinbox = qstyleoption_cast<const QStyleOptionSpinBox *>(opt)) { + // Add some space for the up/down buttons + QRenderRule subRule = renderRule(w, opt, PseudoElement_SpinBoxUpButton); + if (subRule.hasDrawable()) { + QRect r = positionRect(w, rule, subRule, PseudoElement_SpinBoxUpButton, + opt->rect, opt->direction); + sz += QSize(r.width(), 0); + } else { + QSize defaultUpSize = defaultSize(w, subRule.size(), spinbox->rect, PseudoElement_SpinBoxUpButton); + sz += QSize(defaultUpSize.width(), 0); + } + if (rule.hasBox() || !rule.hasNativeBorder()) + sz = rule.boxSize(sz); + return sz; + } + break; case CT_ToolButton: if (rule.hasBox() || !rule.hasNativeBorder() || !rule.baseStyleCanDraw()) sz += QSize(3, 3); // ### broken QToolButton @@ -4858,14 +4870,8 @@ QSize QStyleSheetStyle::sizeFromContents(ContentsType ct, const QStyleOption *op case CT_GroupBox: case CT_LineEdit: #ifndef QT_NO_SPINBOX - // ### hopelessly broken QAbstractSpinBox (part 2) - if (QAbstractSpinBox *spinBox = qobject_cast<QAbstractSpinBox *>(w ? w->parentWidget() : 0)) { - QRenderRule rule = renderRule(spinBox, opt); - if (rule.hasBox() || !rule.hasNativeBorder()) - return csz; - return rule.baseStyleCanDraw() ? baseStyle()->sizeFromContents(ct, opt, sz, w) - : QWindowsStyle::sizeFromContents(ct, opt, sz, w); - } + if (qobject_cast<QAbstractSpinBox *>(w ? w->parentWidget() : 0)) + return csz; // we only care about the size hint of the line edit #endif if (rule.hasBox() || !rule.hasNativeBorder()) { return rule.boxSize(sz); diff --git a/src/widgets/styles/qwindowsxpstyle.cpp b/src/widgets/styles/qwindowsxpstyle.cpp index 3b3c27f6cb..506a148d2f 100644 --- a/src/widgets/styles/qwindowsxpstyle.cpp +++ b/src/widgets/styles/qwindowsxpstyle.cpp @@ -72,6 +72,8 @@ #include <qvarlengtharray.h> #include <qdebug.h> +#include <algorithm> + QT_BEGIN_NAMESPACE // Runtime resolved theme engine function calls @@ -277,7 +279,7 @@ void QWindowsXPStylePrivate::init(bool force) ref.ref(); useXP(true); - qFill(m_themes, m_themes + NThemes, HTHEME(0)); + std::fill(m_themes, m_themes + NThemes, HTHEME(0)); } /* \internal @@ -4306,7 +4308,7 @@ void QWindowsXPStylePrivate::showProperties(XPThemeData &themeData) } } } - qSort(all_props); + std::sort(all_props.begin(), all_props.end()); {// List all properties printf("part properties count = %d:\n", all_props.count()); |