From cd31c065900e5a6cd124a9a08b5d1e7e08dbca80 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Fri, 23 Nov 2012 14:31:49 +0100 Subject: [PATCH] Made QWindowsStyle internal We will take this opportunity to remove various QStyle specializations from the public API in Qt5. This gives us much more freedom, for example changing the inheritance hierarchy, pluginizing etc. without worrying about BC. => Use QStyleFactory and/or QProxyStyle instead of creating an instance or inheriting QWindowsStyle directly. Change-Id: Ic17c7e425535bc5bb3a08620e9059bb0aea5185e Reviewed-by: Andras Becsi Reviewed-by: Lars Knoll Reviewed-by: Thomas Hartmann --- src/widgets/dialogs/qfiledialog.cpp | 2 +- src/widgets/styles/qgtkstyle_p.h | 2 +- src/widgets/styles/qstylefactory.cpp | 2 +- src/widgets/styles/qstylesheetstyle.cpp | 5 +- src/widgets/styles/qstylesheetstyle_p.h | 2 +- src/widgets/styles/qwindowscestyle_p.h | 2 +- src/widgets/styles/qwindowscestyle_p_p.h | 2 +- src/widgets/styles/qwindowsmobilestyle_p.h | 2 +- src/widgets/styles/qwindowsmobilestyle_p_p.h | 2 +- src/widgets/styles/qwindowsstyle.cpp | 3 +- src/widgets/styles/qwindowsstyle_p.h | 97 ++++++++++--------- .../{qwindowsstyle.h => qwindowsstyle_p_p.h} | 103 ++++++++++----------- src/widgets/styles/qwindowsxpstyle_p_p.h | 2 +- src/widgets/styles/styles.pri | 3 +- 14 files changed, 115 insertions(+), 114 deletions(-) rename src/widgets/styles/{qwindowsstyle.h => qwindowsstyle_p_p.h} (52%) diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index 24a610a..fc8b62d 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -304,7 +304,7 @@ Q_WIDGETS_EXPORT _qt_filedialog_save_filename_hook qt_filedialog_save_filename_h QT_BEGIN_INCLUDE_NAMESPACE #ifdef Q_WS_WIN -#include +#include #endif #include #ifdef Q_WS_MAC diff --git a/src/widgets/styles/qgtkstyle_p.h b/src/widgets/styles/qgtkstyle_p.h index c12474a..07f4d41 100644 --- a/src/widgets/styles/qgtkstyle_p.h +++ b/src/widgets/styles/qgtkstyle_p.h @@ -42,7 +42,7 @@ #ifndef QGTKSTYLE_P_H #define QGTKSTYLE_P_H -#include +#include #include #include #include diff --git a/src/widgets/styles/qstylefactory.cpp b/src/widgets/styles/qstylefactory.cpp index 1d61f37..33201e4 100644 --- a/src/widgets/styles/qstylefactory.cpp +++ b/src/widgets/styles/qstylefactory.cpp @@ -45,7 +45,7 @@ #include "qmutex.h" #include "qapplication.h" -#include "qwindowsstyle.h" +#include "qwindowsstyle_p.h" #ifndef QT_NO_STYLE_FUSION #include "qfusionstyle_p.h" #endif diff --git a/src/widgets/styles/qstylesheetstyle.cpp b/src/widgets/styles/qstylesheetstyle.cpp index 17ed82c..b1f1de3 100644 --- a/src/widgets/styles/qstylesheetstyle.cpp +++ b/src/widgets/styles/qstylesheetstyle.cpp @@ -52,9 +52,8 @@ #include #include #include -#include +#include #include -#include #include "private/qcssparser_p.h" #include "private/qmath_p.h" #include @@ -69,7 +68,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/src/widgets/styles/qstylesheetstyle_p.h b/src/widgets/styles/qstylesheetstyle_p.h index f42c0e9..205e5a7 100644 --- a/src/widgets/styles/qstylesheetstyle_p.h +++ b/src/widgets/styles/qstylesheetstyle_p.h @@ -42,7 +42,7 @@ #ifndef QSTYLESHEETSTYLE_P_H #define QSTYLESHEETSTYLE_P_H -#include "QtWidgets/qwindowsstyle.h" +#include "private/qwindowsstyle_p.h" #ifndef QT_NO_STYLE_STYLESHEET diff --git a/src/widgets/styles/qwindowscestyle_p.h b/src/widgets/styles/qwindowscestyle_p.h index 00dcfb1..cadcb98 100644 --- a/src/widgets/styles/qwindowscestyle_p.h +++ b/src/widgets/styles/qwindowscestyle_p.h @@ -42,7 +42,7 @@ #ifndef QWINDOWSCESTYLE_P_H #define QWINDOWSCESTYLE_P_H -#include +#include QT_BEGIN_HEADER diff --git a/src/widgets/styles/qwindowscestyle_p_p.h b/src/widgets/styles/qwindowscestyle_p_p.h index 5f1e330..51128fa 100644 --- a/src/widgets/styles/qwindowscestyle_p_p.h +++ b/src/widgets/styles/qwindowscestyle_p_p.h @@ -43,7 +43,7 @@ #define QWINDOWSCESTYLE_P_P_H #include "qwindowscestyle_p.h" -#include +#include // // W A R N I N G diff --git a/src/widgets/styles/qwindowsmobilestyle_p.h b/src/widgets/styles/qwindowsmobilestyle_p.h index d29389d..eeca466 100644 --- a/src/widgets/styles/qwindowsmobilestyle_p.h +++ b/src/widgets/styles/qwindowsmobilestyle_p.h @@ -42,7 +42,7 @@ #ifndef QWINDOWSMOBILESTYLE_P_H #define QWINDOWSMOBILESTYLE_P_H -#include +#include QT_BEGIN_HEADER diff --git a/src/widgets/styles/qwindowsmobilestyle_p_p.h b/src/widgets/styles/qwindowsmobilestyle_p_p.h index fd6862d..2153c9d 100644 --- a/src/widgets/styles/qwindowsmobilestyle_p_p.h +++ b/src/widgets/styles/qwindowsmobilestyle_p_p.h @@ -54,7 +54,7 @@ // #include "qwindowsmobilestyle_p.h" -#include "qwindowsstyle_p.h" +#include "qwindowsstyle_p_p.h" QT_BEGIN_NAMESPACE diff --git a/src/widgets/styles/qwindowsstyle.cpp b/src/widgets/styles/qwindowsstyle.cpp index d1cd1f6..b060d34 100644 --- a/src/widgets/styles/qwindowsstyle.cpp +++ b/src/widgets/styles/qwindowsstyle.cpp @@ -39,8 +39,8 @@ ** ****************************************************************************/ -#include "qwindowsstyle.h" #include "qwindowsstyle_p.h" +#include "qwindowsstyle_p_p.h" #if !defined(QT_NO_STYLE_WINDOWS) || defined(QT_PLUGIN) @@ -200,6 +200,7 @@ bool QWindowsStyle::eventFilter(QObject *o, QEvent *e) \ingroup appearance \inmodule QtWidgets + \internal This style is Qt's default GUI style on Windows. diff --git a/src/widgets/styles/qwindowsstyle_p.h b/src/widgets/styles/qwindowsstyle_p.h index 6d69557..542e61c 100644 --- a/src/widgets/styles/qwindowsstyle_p.h +++ b/src/widgets/styles/qwindowsstyle_p.h @@ -42,58 +42,67 @@ #ifndef QWINDOWSSTYLE_P_H #define QWINDOWSSTYLE_P_H -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists for the convenience -// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header -// file may change from version to version without notice, or even be removed. -// -// We mean it. -// - -#include "qwindowsstyle.h" -#include "qcommonstyle_p.h" - -#ifndef QT_NO_STYLE_WINDOWS -#include -#include +#include + +QT_BEGIN_HEADER QT_BEGIN_NAMESPACE -class QTime; -class QWindowsStylePrivate : public QCommonStylePrivate +#if !defined(QT_NO_STYLE_WINDOWS) + +class QWindowsStylePrivate; + +class QWindowsStyle : public QCommonStyle { - Q_DECLARE_PUBLIC(QWindowsStyle) + Q_OBJECT public: - QWindowsStylePrivate(); - bool hasSeenAlt(const QWidget *widget) const; - bool altDown() const { return alt_down; } - bool alt_down; - QList seenAlt; - int menuBarTimer; - - QColor inactiveCaptionText; - QColor activeCaptionColor; - QColor activeGradientCaptionColor; - QColor inactiveCaptionColor; - QColor inactiveGradientCaptionColor; - - enum { - windowsItemFrame = 2, // menu item frame width - windowsSepHeight = 9, // separator item height - windowsItemHMargin = 3, // menu item hor text margin - windowsItemVMargin = 2, // menu item ver text margin - windowsArrowHMargin = 6, // arrow horizontal margin - windowsRightBorder = 15, // right border on windows - windowsCheckMarkWidth = 12 // checkmarks width on windows - }; + QWindowsStyle(); + ~QWindowsStyle(); + + void polish(QApplication*); + void unpolish(QApplication*); + + void polish(QWidget*); + void unpolish(QWidget*); + + void polish(QPalette &); + + void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, + const QWidget *w = 0) const; + void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, + const QWidget *w = 0) const; + QRect subElementRect(SubElement r, const QStyleOption *opt, const QWidget *widget = 0) const; + void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, + const QWidget *w = 0) const; + QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, + const QSize &contentsSize, const QWidget *widget = 0) const; + + int pixelMetric(PixelMetric pm, const QStyleOption *option = 0, const QWidget *widget = 0) const; + + int styleHint(StyleHint hint, const QStyleOption *opt = 0, const QWidget *widget = 0, + QStyleHintReturn *returnData = 0) const; + + QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, + const QWidget *widget = 0) const; + + QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option = 0, + const QWidget *widget = 0) const; + +protected: + bool eventFilter(QObject *o, QEvent *e); + QWindowsStyle(QWindowsStylePrivate &dd); + +private: + Q_DISABLE_COPY(QWindowsStyle) + Q_DECLARE_PRIVATE(QWindowsStyle) + void *reserved; }; +#endif // QT_NO_STYLE_WINDOWS + QT_END_NAMESPACE -#endif // QT_NO_STYLE_WINDOWS +QT_END_HEADER -#endif //QWINDOWSSTYLE_P_H +#endif // QWINDOWSSTYLE_P_H diff --git a/src/widgets/styles/qwindowsstyle.h b/src/widgets/styles/qwindowsstyle_p_p.h similarity index 52% rename from src/widgets/styles/qwindowsstyle.h rename to src/widgets/styles/qwindowsstyle_p_p.h index 1d9347a..9968490 100644 --- a/src/widgets/styles/qwindowsstyle.h +++ b/src/widgets/styles/qwindowsstyle_p_p.h @@ -39,70 +39,61 @@ ** ****************************************************************************/ -#ifndef QWINDOWSSTYLE_H -#define QWINDOWSSTYLE_H - -#include - -QT_BEGIN_HEADER +#ifndef QWINDOWSSTYLE_P_P_H +#define QWINDOWSSTYLE_P_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists for the convenience +// of qapplication_*.cpp, qwidget*.cpp and qfiledialog.cpp. This header +// file may change from version to version without notice, or even be removed. +// +// We mean it. +// + +#include "qwindowsstyle_p.h" +#include "qcommonstyle_p.h" + +#ifndef QT_NO_STYLE_WINDOWS +#include +#include QT_BEGIN_NAMESPACE +class QTime; -#if !defined(QT_NO_STYLE_WINDOWS) - -class QWindowsStylePrivate; - -class Q_WIDGETS_EXPORT QWindowsStyle : public QCommonStyle +class QWindowsStylePrivate : public QCommonStylePrivate { - Q_OBJECT + Q_DECLARE_PUBLIC(QWindowsStyle) public: - QWindowsStyle(); - ~QWindowsStyle(); - - void polish(QApplication*); - void unpolish(QApplication*); - - void polish(QWidget*); - void unpolish(QWidget*); - - void polish(QPalette &); - - void drawPrimitive(PrimitiveElement pe, const QStyleOption *opt, QPainter *p, - const QWidget *w = 0) const; - void drawControl(ControlElement element, const QStyleOption *opt, QPainter *p, - const QWidget *w = 0) const; - QRect subElementRect(SubElement r, const QStyleOption *opt, const QWidget *widget = 0) const; - void drawComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, QPainter *p, - const QWidget *w = 0) const; - QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, - const QSize &contentsSize, const QWidget *widget = 0) const; - - int pixelMetric(PixelMetric pm, const QStyleOption *option = 0, const QWidget *widget = 0) const; - - int styleHint(StyleHint hint, const QStyleOption *opt = 0, const QWidget *widget = 0, - QStyleHintReturn *returnData = 0) const; - - QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption *opt, - const QWidget *widget = 0) const; - - QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *option = 0, - const QWidget *widget = 0) const; - -protected: - bool eventFilter(QObject *o, QEvent *e); - QWindowsStyle(QWindowsStylePrivate &dd); - -private: - Q_DISABLE_COPY(QWindowsStyle) - Q_DECLARE_PRIVATE(QWindowsStyle) - void *reserved; + QWindowsStylePrivate(); + bool hasSeenAlt(const QWidget *widget) const; + bool altDown() const { return alt_down; } + bool alt_down; + QList seenAlt; + int menuBarTimer; + + QColor inactiveCaptionText; + QColor activeCaptionColor; + QColor activeGradientCaptionColor; + QColor inactiveCaptionColor; + QColor inactiveGradientCaptionColor; + + enum { + windowsItemFrame = 2, // menu item frame width + windowsSepHeight = 9, // separator item height + windowsItemHMargin = 3, // menu item hor text margin + windowsItemVMargin = 2, // menu item ver text margin + windowsArrowHMargin = 6, // arrow horizontal margin + windowsRightBorder = 15, // right border on windows + windowsCheckMarkWidth = 12 // checkmarks width on windows + }; }; -#endif // QT_NO_STYLE_WINDOWS - QT_END_NAMESPACE -QT_END_HEADER +#endif // QT_NO_STYLE_WINDOWS -#endif // QWINDOWSSTYLE_H +#endif //QWINDOWSSTYLE_P_P_H diff --git a/src/widgets/styles/qwindowsxpstyle_p_p.h b/src/widgets/styles/qwindowsxpstyle_p_p.h index 6bd5e58..91b6d64 100644 --- a/src/widgets/styles/qwindowsxpstyle_p_p.h +++ b/src/widgets/styles/qwindowsxpstyle_p_p.h @@ -54,7 +54,7 @@ // #include "qwindowsxpstyle_p.h" -#include "qwindowsstyle_p.h" +#include "qwindowsstyle_p_p.h" #include #include diff --git a/src/widgets/styles/styles.pri b/src/widgets/styles/styles.pri index 71a4bf1..b15eb1f 100644 --- a/src/widgets/styles/styles.pri +++ b/src/widgets/styles/styles.pri @@ -66,7 +66,8 @@ contains( styles, mac ) { } contains( styles, windows ) { - HEADERS += styles/qwindowsstyle.h + HEADERS += styles/qwindowsstyle_p.h + HEADERS += styles/qwindowsstyle_p_p.h SOURCES += styles/qwindowsstyle.cpp DEFINES += QT_STYLE_WINDOWS } else { -- 2.7.4