From 27aa41cbba6c0bd76148fde63863cfbba0ec2456 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Sat, 17 Nov 2012 00:52:26 +0100 Subject: Made QMacStyle internal We will take this opportynity 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 QMacStyle directly. Change-Id: I44a2f5ee3fe08ecc837b593a2a2737eb90e8c267 Reviewed-by: Gabriel de Dietrich --- src/widgets/dialogs/qfiledialog.cpp | 2 +- src/widgets/graphicsview/qgraphicswidget_p.cpp | 2 +- src/widgets/styles/qmacstyle_mac.h | 141 -------------- src/widgets/styles/qmacstyle_mac.mm | 2 +- src/widgets/styles/qmacstyle_mac_p.h | 251 +++++++------------------ src/widgets/styles/qmacstyle_mac_p_p.h | 244 ++++++++++++++++++++++++ src/widgets/styles/qstylefactory.cpp | 2 +- src/widgets/styles/qstyleoption.cpp | 2 +- src/widgets/styles/styles.pri | 4 +- src/widgets/widgets/qcombobox.cpp | 2 +- src/widgets/widgets/qdockwidget.cpp | 2 +- src/widgets/widgets/qmdiarea.cpp | 2 +- src/widgets/widgets/qmdisubwindow.cpp | 2 +- src/widgets/widgets/qpushbutton.cpp | 2 +- 14 files changed, 327 insertions(+), 333 deletions(-) delete mode 100644 src/widgets/styles/qmacstyle_mac.h create mode 100644 src/widgets/styles/qmacstyle_mac_p_p.h (limited to 'src/widgets') diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index 9a2e32b631..24a610a69f 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -308,7 +308,7 @@ QT_BEGIN_INCLUDE_NAMESPACE #endif #include #ifdef Q_WS_MAC -#include +#include #endif QT_END_INCLUDE_NAMESPACE diff --git a/src/widgets/graphicsview/qgraphicswidget_p.cpp b/src/widgets/graphicsview/qgraphicswidget_p.cpp index e109da209d..4ec215a720 100644 --- a/src/widgets/graphicsview/qgraphicswidget_p.cpp +++ b/src/widgets/graphicsview/qgraphicswidget_p.cpp @@ -55,7 +55,7 @@ #include #include #if defined(Q_WS_MAC) && !defined(QT_NO_STYLE_MAC) -# include +# include #endif QT_BEGIN_NAMESPACE diff --git a/src/widgets/styles/qmacstyle_mac.h b/src/widgets/styles/qmacstyle_mac.h deleted file mode 100644 index 1de1dbbdd8..0000000000 --- a/src/widgets/styles/qmacstyle_mac.h +++ /dev/null @@ -1,141 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). -** Contact: http://www.qt-project.org/legal -** -** This file is part of the QtGui module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and Digia. For licensing terms and -** conditions see http://qt.digia.com/licensing. For further information -** use the contact form at http://qt.digia.com/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 2.1 requirements -** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Digia gives you certain additional -** rights. These rights are described in the Digia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3.0 as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL included in the -** packaging of this file. Please review the following information to -** ensure the GNU General Public License version 3.0 requirements will be -** met: http://www.gnu.org/copyleft/gpl.html. -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#ifndef QMACSTYLE_MAC_H -#define QMACSTYLE_MAC_H - -#include - -QT_BEGIN_HEADER - -QT_BEGIN_NAMESPACE - - -#if defined(Q_OS_MAC) && !defined(QT_NO_STYLE_MAC) - -class QPalette; - -#if defined(QT_PLUGIN) -#define Q_WIDGETS_EXPORT_STYLE_MAC -#else -#define Q_WIDGETS_EXPORT_STYLE_MAC Q_WIDGETS_EXPORT -#endif - -class QPushButton; -class QStyleOptionButton; -class QMacStylePrivate; -class Q_WIDGETS_EXPORT_STYLE_MAC QMacStyle : public QCommonStyle -{ - Q_OBJECT -public: - QMacStyle(); - virtual ~QMacStyle(); - - void polish(QWidget *w); - void unpolish(QWidget *w); - - void polish(QApplication*); - void unpolish(QApplication*); - - void polish(QPalette &pal); - - 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; - SubControl hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, - const QPoint &pt, const QWidget *w = 0) const; - QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, - const QWidget *w = 0) const; - QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, - const QSize &contentsSize, const QWidget *w = 0) const; - - int pixelMetric(PixelMetric pm, const QStyleOption *opt = 0, const QWidget *widget = 0) const; - - QPalette standardPalette() const; - - virtual int styleHint(StyleHint sh, const QStyleOption *opt = 0, const QWidget *w = 0, - QStyleHintReturn *shret = 0) const; - - enum FocusRectPolicy { FocusEnabled, FocusDisabled, FocusDefault }; - static void setFocusRectPolicy(QWidget *w, FocusRectPolicy policy); - static FocusRectPolicy focusRectPolicy(const QWidget *w); - - enum WidgetSizePolicy { SizeSmall, SizeLarge, SizeMini, SizeDefault - }; - - static void setWidgetSizePolicy(const QWidget *w, WidgetSizePolicy policy); - static WidgetSizePolicy widgetSizePolicy(const QWidget *w, const QStyleOption *opt = 0); - - QPixmap standardPixmap(StandardPixmap sp, const QStyleOption *opt, - const QWidget *widget = 0) const; - - QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, - const QStyleOption *opt) const; - - virtual void drawItemText(QPainter *p, const QRect &r, int flags, const QPalette &pal, - bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const; - - bool event(QEvent *e); - - QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *opt = 0, - const QWidget *widget = 0) const; - int layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, - Qt::Orientation orientation, const QStyleOption *option = 0, - const QWidget *widget = 0) const; - -private: - Q_DISABLE_COPY(QMacStyle) - Q_DECLARE_PRIVATE(QMacStyle) - - friend bool qt_mac_buttonIsRenderedFlat(const QPushButton *pushButton, const QStyleOptionButton *option); -}; - -#endif // Q_WS_MAC - -QT_END_NAMESPACE - -QT_END_HEADER - -#endif // QMACSTYLE_H diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm index baeda89642..4c34142d41 100644 --- a/src/widgets/styles/qmacstyle_mac.mm +++ b/src/widgets/styles/qmacstyle_mac.mm @@ -46,8 +46,8 @@ #include -#include "qmacstyle_mac.h" #include "qmacstyle_mac_p.h" +#include "qmacstyle_mac_p_p.h" #include "qmacstylepixmaps_mac_p.h" #define QMAC_QAQUASTYLE_SIZE_CONSTRAIN diff --git a/src/widgets/styles/qmacstyle_mac_p.h b/src/widgets/styles/qmacstyle_mac_p.h index f01d1e14c5..d1a29622e7 100644 --- a/src/widgets/styles/qmacstyle_mac_p.h +++ b/src/widgets/styles/qmacstyle_mac_p.h @@ -39,206 +39,97 @@ ** ****************************************************************************/ - #ifndef QMACSTYLE_MAC_P_H #define QMACSTYLE_MAC_P_H -#include -#undef check - -#include "qmacstyle_mac.h" -#include "qcommonstyle_p.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - - -// -// W A R N I N G -// ------------- -// -// This file is not part of the Qt API. It exists purely as an -// implementation detail. This header file may change from version to -// version without notice, or even be removed. -// -// We mean it. -// +#include + +QT_BEGIN_HEADER QT_BEGIN_NAMESPACE -/* - AHIG: - Apple Human Interface Guidelines - http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/ - Builder: - Apple Interface Builder v. 3.1.1 -*/ +#if defined(Q_OS_MAC) && !defined(QT_NO_STYLE_MAC) -// this works as long as we have at most 16 different control types -#define CT1(c) CT2(c, c) -#define CT2(c1, c2) ((uint(c1) << 16) | uint(c2)) +class QPalette; -enum QAquaWidgetSize { QAquaSizeLarge = 0, QAquaSizeSmall = 1, QAquaSizeMini = 2, - QAquaSizeUnknown = -1 }; +class QPushButton; +class QStyleOptionButton; +class QMacStylePrivate; +class QMacStyle : public QCommonStyle +{ + Q_OBJECT +public: + QMacStyle(); + virtual ~QMacStyle(); -#define SIZE(large, small, mini) \ - (controlSize == QAquaSizeLarge ? (large) : controlSize == QAquaSizeSmall ? (small) : (mini)) + void polish(QWidget *w); + void unpolish(QWidget *w); -// same as return SIZE(...) but optimized -#define return_SIZE(large, small, mini) \ - do { \ - static const int sizes[] = { (large), (small), (mini) }; \ - return sizes[controlSize]; \ - } while (0) + void polish(QApplication*); + void unpolish(QApplication*); -bool qt_mac_buttonIsRenderedFlat(const QPushButton *pushButton, const QStyleOptionButton *option); + void polish(QPalette &pal); -class QMacStylePrivate : public QCommonStylePrivate -{ - Q_DECLARE_PUBLIC(QMacStyle) -public: - QMacStylePrivate(); - - // Ideally these wouldn't exist, but since they already exist we need some accessors. - static const int PushButtonLeftOffset; - static const int PushButtonTopOffset; - static const int PushButtonRightOffset; - static const int PushButtonBottomOffset; - static const int MiniButtonH; - static const int SmallButtonH; - static const int BevelButtonW; - static const int BevelButtonH; - static const int PushButtonContentPadding; - static const qreal ScrollBarFadeOutDuration; - static const qreal ScrollBarFadeOutDelay; - - enum Animates { AquaPushButton, AquaProgressBar, AquaListViewItemOpen, AquaScrollBar }; - static ThemeDrawState getDrawState(QStyle::State flags); - QAquaWidgetSize aquaSizeConstrain(const QStyleOption *option, const QWidget *widg, - QStyle::ContentsType ct = QStyle::CT_CustomBase, - QSize szHint=QSize(-1, -1), QSize *insz = 0) const; - void getSliderInfo(QStyle::ComplexControl cc, const QStyleOptionSlider *slider, - HIThemeTrackDrawInfo *tdi, const QWidget *needToRemoveMe) const; - inline int animateSpeed(Animates) const { return 33; } - - // Utility functions - void drawColorlessButton(const HIRect &macRect, HIThemeButtonDrawInfo *bdi, - QPainter *p, const QStyleOption *opt) const; - - QSize pushButtonSizeFromContents(const QStyleOptionButton *btn) const; - - HIRect pushButtonContentBounds(const QStyleOptionButton *btn, - const HIThemeButtonDrawInfo *bdi) const; - - void initComboboxBdi(const QStyleOptionComboBox *combo, HIThemeButtonDrawInfo *bdi, - const QWidget *widget, const ThemeDrawState &tds) const; - - static HIRect comboboxInnerBounds(const HIRect &outerBounds, int buttonKind); - - static QRect comboboxEditBounds(const QRect &outerBounds, const HIThemeButtonDrawInfo &bdi); - - static void drawCombobox(const HIRect &outerBounds, const HIThemeButtonDrawInfo &bdi, QPainter *p); - static void drawTableHeader(const HIRect &outerBounds, bool drawTopBorder, bool drawLeftBorder, - const HIThemeButtonDrawInfo &bdi, QPainter *p); - bool contentFitsInPushButton(const QStyleOptionButton *btn, HIThemeButtonDrawInfo *bdi, - ThemeButtonKind buttonKindToCheck) const; - void initHIThemePushButton(const QStyleOptionButton *btn, const QWidget *widget, - const ThemeDrawState tds, - HIThemeButtonDrawInfo *bdi) const; - QPixmap generateBackgroundPattern() const; + 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; + SubControl hitTestComplexControl(ComplexControl cc, const QStyleOptionComplex *opt, + const QPoint &pt, const QWidget *w = 0) const; + QRect subControlRect(ComplexControl cc, const QStyleOptionComplex *opt, SubControl sc, + const QWidget *w = 0) const; + QSize sizeFromContents(ContentsType ct, const QStyleOption *opt, + const QSize &contentsSize, const QWidget *w = 0) const; -public: - mutable QPointer pressedButton; - mutable QPointer defaultButton; - mutable QPointer autoDefaultButton; - - struct ButtonState { - int frame; - enum { ButtonDark, ButtonLight } dir; - } buttonState; - mutable QPointer focusWidget; - CFAbsoluteTime defaultButtonStart; - bool mouseDown; -#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 - void* receiver; - void *nsscroller; -#endif -}; + int pixelMetric(PixelMetric pm, const QStyleOption *opt = 0, const QWidget *widget = 0) const; -class QFadeOutAnimation : public QNumberStyleAnimation -{ - Q_OBJECT + QPalette standardPalette() const; -public: - QFadeOutAnimation(QObject *target) : QNumberStyleAnimation(target), _active(false) - { - setDuration(QMacStylePrivate::ScrollBarFadeOutDelay + QMacStylePrivate::ScrollBarFadeOutDuration); - setDelay(QMacStylePrivate::ScrollBarFadeOutDelay); - setStartValue(1.0); - setEndValue(0.0); - } - - bool wasActive() const { return _active; } - void setActive(bool active) { _active = active; } - -private slots: - void updateCurrentTime(int time) - { - QNumberStyleAnimation::updateCurrentTime(time); - if (qFuzzyIsNull(currentValue())) - target()->setProperty("visible", false); - } + virtual int styleHint(StyleHint sh, const QStyleOption *opt = 0, const QWidget *w = 0, + QStyleHintReturn *shret = 0) const; + + enum FocusRectPolicy { FocusEnabled, FocusDisabled, FocusDefault }; + static void setFocusRectPolicy(QWidget *w, FocusRectPolicy policy); + static FocusRectPolicy focusRectPolicy(const QWidget *w); + + enum WidgetSizePolicy { SizeSmall, SizeLarge, SizeMini, SizeDefault + }; + + static void setWidgetSizePolicy(const QWidget *w, WidgetSizePolicy policy); + static WidgetSizePolicy widgetSizePolicy(const QWidget *w, const QStyleOption *opt = 0); + + QPixmap standardPixmap(StandardPixmap sp, const QStyleOption *opt, + const QWidget *widget = 0) const; + + QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap &pixmap, + const QStyleOption *opt) const; + + virtual void drawItemText(QPainter *p, const QRect &r, int flags, const QPalette &pal, + bool enabled, const QString &text, QPalette::ColorRole textRole = QPalette::NoRole) const; + + bool event(QEvent *e); + + QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption *opt = 0, + const QWidget *widget = 0) const; + int layoutSpacing(QSizePolicy::ControlType control1, QSizePolicy::ControlType control2, + Qt::Orientation orientation, const QStyleOption *option = 0, + const QWidget *widget = 0) const; private: - bool _active; + Q_DISABLE_COPY(QMacStyle) + Q_DECLARE_PRIVATE(QMacStyle) + + friend bool qt_mac_buttonIsRenderedFlat(const QPushButton *pushButton, const QStyleOptionButton *option); }; +#endif // Q_WS_MAC + QT_END_NAMESPACE +QT_END_HEADER + #endif // QMACSTYLE_MAC_P_H diff --git a/src/widgets/styles/qmacstyle_mac_p_p.h b/src/widgets/styles/qmacstyle_mac_p_p.h new file mode 100644 index 0000000000..c2e5a024a4 --- /dev/null +++ b/src/widgets/styles/qmacstyle_mac_p_p.h @@ -0,0 +1,244 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the QtGui module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + + +#ifndef QMACSTYLE_MAC_P_P_H +#define QMACSTYLE_MAC_P_P_H + +#include +#undef check + +#include "qmacstyle_mac_p.h" +#include "qcommonstyle_p.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +QT_BEGIN_NAMESPACE + +/* + AHIG: + Apple Human Interface Guidelines + http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/ + + Builder: + Apple Interface Builder v. 3.1.1 +*/ + +// this works as long as we have at most 16 different control types +#define CT1(c) CT2(c, c) +#define CT2(c1, c2) ((uint(c1) << 16) | uint(c2)) + +enum QAquaWidgetSize { QAquaSizeLarge = 0, QAquaSizeSmall = 1, QAquaSizeMini = 2, + QAquaSizeUnknown = -1 }; + +#define SIZE(large, small, mini) \ + (controlSize == QAquaSizeLarge ? (large) : controlSize == QAquaSizeSmall ? (small) : (mini)) + +// same as return SIZE(...) but optimized +#define return_SIZE(large, small, mini) \ + do { \ + static const int sizes[] = { (large), (small), (mini) }; \ + return sizes[controlSize]; \ + } while (0) + +bool qt_mac_buttonIsRenderedFlat(const QPushButton *pushButton, const QStyleOptionButton *option); + +class QMacStylePrivate : public QCommonStylePrivate +{ + Q_DECLARE_PUBLIC(QMacStyle) +public: + QMacStylePrivate(); + + // Ideally these wouldn't exist, but since they already exist we need some accessors. + static const int PushButtonLeftOffset; + static const int PushButtonTopOffset; + static const int PushButtonRightOffset; + static const int PushButtonBottomOffset; + static const int MiniButtonH; + static const int SmallButtonH; + static const int BevelButtonW; + static const int BevelButtonH; + static const int PushButtonContentPadding; + static const qreal ScrollBarFadeOutDuration; + static const qreal ScrollBarFadeOutDelay; + + enum Animates { AquaPushButton, AquaProgressBar, AquaListViewItemOpen, AquaScrollBar }; + static ThemeDrawState getDrawState(QStyle::State flags); + QAquaWidgetSize aquaSizeConstrain(const QStyleOption *option, const QWidget *widg, + QStyle::ContentsType ct = QStyle::CT_CustomBase, + QSize szHint=QSize(-1, -1), QSize *insz = 0) const; + void getSliderInfo(QStyle::ComplexControl cc, const QStyleOptionSlider *slider, + HIThemeTrackDrawInfo *tdi, const QWidget *needToRemoveMe) const; + inline int animateSpeed(Animates) const { return 33; } + + // Utility functions + void drawColorlessButton(const HIRect &macRect, HIThemeButtonDrawInfo *bdi, + QPainter *p, const QStyleOption *opt) const; + + QSize pushButtonSizeFromContents(const QStyleOptionButton *btn) const; + + HIRect pushButtonContentBounds(const QStyleOptionButton *btn, + const HIThemeButtonDrawInfo *bdi) const; + + void initComboboxBdi(const QStyleOptionComboBox *combo, HIThemeButtonDrawInfo *bdi, + const QWidget *widget, const ThemeDrawState &tds) const; + + static HIRect comboboxInnerBounds(const HIRect &outerBounds, int buttonKind); + + static QRect comboboxEditBounds(const QRect &outerBounds, const HIThemeButtonDrawInfo &bdi); + + static void drawCombobox(const HIRect &outerBounds, const HIThemeButtonDrawInfo &bdi, QPainter *p); + static void drawTableHeader(const HIRect &outerBounds, bool drawTopBorder, bool drawLeftBorder, + const HIThemeButtonDrawInfo &bdi, QPainter *p); + bool contentFitsInPushButton(const QStyleOptionButton *btn, HIThemeButtonDrawInfo *bdi, + ThemeButtonKind buttonKindToCheck) const; + void initHIThemePushButton(const QStyleOptionButton *btn, const QWidget *widget, + const ThemeDrawState tds, + HIThemeButtonDrawInfo *bdi) const; + QPixmap generateBackgroundPattern() const; + +public: + mutable QPointer pressedButton; + mutable QPointer defaultButton; + mutable QPointer autoDefaultButton; + + struct ButtonState { + int frame; + enum { ButtonDark, ButtonLight } dir; + } buttonState; + mutable QPointer focusWidget; + CFAbsoluteTime defaultButtonStart; + bool mouseDown; +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7 + void* receiver; + void *nsscroller; +#endif +}; + +class QFadeOutAnimation : public QNumberStyleAnimation +{ + Q_OBJECT + +public: + QFadeOutAnimation(QObject *target) : QNumberStyleAnimation(target), _active(false) + { + setDuration(QMacStylePrivate::ScrollBarFadeOutDelay + QMacStylePrivate::ScrollBarFadeOutDuration); + setDelay(QMacStylePrivate::ScrollBarFadeOutDelay); + setStartValue(1.0); + setEndValue(0.0); + } + + bool wasActive() const { return _active; } + void setActive(bool active) { _active = active; } + +private slots: + void updateCurrentTime(int time) + { + QNumberStyleAnimation::updateCurrentTime(time); + if (qFuzzyIsNull(currentValue())) + target()->setProperty("visible", false); + } + +private: + bool _active; +}; + +QT_END_NAMESPACE + +#endif // QMACSTYLE_MAC_P_P_H diff --git a/src/widgets/styles/qstylefactory.cpp b/src/widgets/styles/qstylefactory.cpp index 93e3e6da16..1d61f37384 100644 --- a/src/widgets/styles/qstylefactory.cpp +++ b/src/widgets/styles/qstylefactory.cpp @@ -66,7 +66,7 @@ #endif #if !defined(QT_NO_STYLE_MAC) && defined(Q_OS_MAC) -# include "qmacstyle_mac.h" +# include "qmacstyle_mac_p.h" #endif QT_BEGIN_NAMESPACE diff --git a/src/widgets/styles/qstyleoption.cpp b/src/widgets/styles/qstyleoption.cpp index 3bc0c053b9..0ec42e446d 100644 --- a/src/widgets/styles/qstyleoption.cpp +++ b/src/widgets/styles/qstyleoption.cpp @@ -42,7 +42,7 @@ #include "qstyleoption.h" #include "qapplication.h" #ifdef Q_OS_MAC -# include "qmacstyle_mac.h" +# include "qmacstyle_mac_p.h" #endif #include #include diff --git a/src/widgets/styles/styles.pri b/src/widgets/styles/styles.pri index d2c0615165..71a4bf1e76 100644 --- a/src/widgets/styles/styles.pri +++ b/src/widgets/styles/styles.pri @@ -51,9 +51,9 @@ contains(QT_CONFIG, gtkstyle) { contains( styles, mac ) { HEADERS += \ - styles/qmacstyle_mac.h \ + styles/qmacstyle_mac_p.h \ styles/qmacstylepixmaps_mac_p.h \ - styles/qmacstyle_mac_p.h + styles/qmacstyle_mac_p_p.h OBJECTIVE_SOURCES += styles/qmacstyle_mac.mm !contains( styles, windows ) { diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp index f22fc196a2..bf650c513b 100644 --- a/src/widgets/widgets/qcombobox.cpp +++ b/src/widgets/widgets/qcombobox.cpp @@ -67,7 +67,7 @@ #include #if defined(Q_WS_MAC) && !defined(QT_NO_EFFECTS) && !defined(QT_NO_STYLE_MAC) #include -#include +#include #include #endif #ifndef QT_NO_EFFECTS diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp index 12f957412f..d8d67ca6c8 100644 --- a/src/widgets/widgets/qdockwidget.cpp +++ b/src/widgets/widgets/qdockwidget.cpp @@ -63,7 +63,7 @@ #ifdef Q_WS_MAC #include #include -#include +#include #endif QT_BEGIN_NAMESPACE diff --git a/src/widgets/widgets/qmdiarea.cpp b/src/widgets/widgets/qmdiarea.cpp index 3b4f026130..66dc49f5f7 100644 --- a/src/widgets/widgets/qmdiarea.cpp +++ b/src/widgets/widgets/qmdiarea.cpp @@ -163,7 +163,7 @@ #include #include #if defined(Q_WS_MAC) && !defined(QT_NO_STYLE_MAC) -#include +#include #endif #include #include diff --git a/src/widgets/widgets/qmdisubwindow.cpp b/src/widgets/widgets/qmdisubwindow.cpp index a99f2d3d1d..8d11778266 100644 --- a/src/widgets/widgets/qmdisubwindow.cpp +++ b/src/widgets/widgets/qmdisubwindow.cpp @@ -161,7 +161,7 @@ #include #include #if defined(Q_WS_MAC) && !defined(QT_NO_STYLE_MAC) -#include +#include #endif #include diff --git a/src/widgets/widgets/qpushbutton.cpp b/src/widgets/widgets/qpushbutton.cpp index 0aeec551d6..d3f63ad138 100644 --- a/src/widgets/widgets/qpushbutton.cpp +++ b/src/widgets/widgets/qpushbutton.cpp @@ -59,8 +59,8 @@ #include "qlayoutitem.h" #include "qdialogbuttonbox.h" #ifdef Q_WS_MAC -#include "qmacstyle_mac.h" #include "private/qmacstyle_mac_p.h" +#include "private/qmacstyle_mac_p_p.h" #endif // Q_WS_MAC #ifndef QT_NO_ACCESSIBILITY -- cgit v1.2.3