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 <gabriel.dedietrich@digia.com>
This commit is contained in:
J-P Nurmi 2012-11-17 00:52:26 +01:00 committed by The Qt Project
parent d25572cc7b
commit 27aa41cbba
22 changed files with 340 additions and 368 deletions

View File

@ -308,7 +308,7 @@ QT_BEGIN_INCLUDE_NAMESPACE
#endif
#include <qshortcut.h>
#ifdef Q_WS_MAC
#include <qmacstyle_mac.h>
#include <qmacstyle_mac_p.h>
#endif
QT_END_INCLUDE_NAMESPACE

View File

@ -55,7 +55,7 @@
#include <QtWidgets/QStyleOptionTitleBar>
#include <QtWidgets/QGraphicsSceneMouseEvent>
#if defined(Q_WS_MAC) && !defined(QT_NO_STYLE_MAC)
# include <QMacStyle>
# include <private/qmacstyle_mac_p.h>
#endif
QT_BEGIN_NAMESPACE

View File

@ -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 <QtWidgets/qcommonstyle.h>
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

View File

@ -46,8 +46,8 @@
#include <Cocoa/Cocoa.h>
#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

View File

@ -39,206 +39,97 @@
**
****************************************************************************/
#ifndef QMACSTYLE_MAC_P_H
#define QMACSTYLE_MAC_P_H
#include <Carbon/Carbon.h>
#undef check
#include <QtWidgets/qcommonstyle.h>
#include "qmacstyle_mac.h"
#include "qcommonstyle_p.h"
#include <private/qapplication_p.h>
#include <private/qcombobox_p.h>
#include <private/qpainter_p.h>
#include <private/qstylehelper_p.h>
#include <qapplication.h>
#include <qbitmap.h>
#include <qcheckbox.h>
#include <qcombobox.h>
#include <qdialogbuttonbox.h>
#include <qdockwidget.h>
#include <qevent.h>
#include <qfocusframe.h>
#include <qformlayout.h>
#include <qgroupbox.h>
#include <qhash.h>
#include <qheaderview.h>
#include <qlayout.h>
#include <qlineedit.h>
#include <qlistview.h>
#include <qmainwindow.h>
#include <qmap.h>
#include <qmenubar.h>
#include <qpaintdevice.h>
#include <qpainter.h>
#include <qpixmapcache.h>
#include <qpointer.h>
#include <qprogressbar.h>
#include <qpushbutton.h>
#include <qradiobutton.h>
#include <qrubberband.h>
#include <qsizegrip.h>
#include <qspinbox.h>
#include <qsplitter.h>
#include <qstyleoption.h>
#include <qtextedit.h>
#include <qtextstream.h>
#include <qtoolbar.h>
#include <qtoolbutton.h>
#include <qtreeview.h>
#include <qtableview.h>
#include <qwizard.h>
#include <qdebug.h>
#include <qlibrary.h>
#include <qdatetimeedit.h>
#include <qmath.h>
#include <QtWidgets/qgraphicsproxywidget.h>
#include <QtWidgets/qgraphicsview.h>
//
// 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_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 };
#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<QObject> pressedButton;
mutable QPointer<QObject> defaultButton;
mutable QPointer<QObject> autoDefaultButton;
struct ButtonState {
int frame;
enum { ButtonDark, ButtonLight } dir;
} buttonState;
mutable QPointer<QFocusFrame> 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
class QPushButton;
class QStyleOptionButton;
class QMacStylePrivate;
class QMacStyle : public QCommonStyle
{
Q_OBJECT
public:
QFadeOutAnimation(QObject *target) : QNumberStyleAnimation(target), _active(false)
{
setDuration(QMacStylePrivate::ScrollBarFadeOutDelay + QMacStylePrivate::ScrollBarFadeOutDuration);
setDelay(QMacStylePrivate::ScrollBarFadeOutDelay);
setStartValue(1.0);
setEndValue(0.0);
}
QMacStyle();
virtual ~QMacStyle();
bool wasActive() const { return _active; }
void setActive(bool active) { _active = active; }
void polish(QWidget *w);
void unpolish(QWidget *w);
private slots:
void updateCurrentTime(int time)
{
QNumberStyleAnimation::updateCurrentTime(time);
if (qFuzzyIsNull(currentValue()))
target()->setProperty("visible", false);
}
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:
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

View File

@ -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 <Carbon/Carbon.h>
#undef check
#include "qmacstyle_mac_p.h"
#include "qcommonstyle_p.h"
#include <private/qapplication_p.h>
#include <private/qcombobox_p.h>
#include <private/qpainter_p.h>
#include <private/qstylehelper_p.h>
#include <qapplication.h>
#include <qbitmap.h>
#include <qcheckbox.h>
#include <qcombobox.h>
#include <qdialogbuttonbox.h>
#include <qdockwidget.h>
#include <qevent.h>
#include <qfocusframe.h>
#include <qformlayout.h>
#include <qgroupbox.h>
#include <qhash.h>
#include <qheaderview.h>
#include <qlayout.h>
#include <qlineedit.h>
#include <qlistview.h>
#include <qmainwindow.h>
#include <qmap.h>
#include <qmenubar.h>
#include <qpaintdevice.h>
#include <qpainter.h>
#include <qpixmapcache.h>
#include <qpointer.h>
#include <qprogressbar.h>
#include <qpushbutton.h>
#include <qradiobutton.h>
#include <qrubberband.h>
#include <qsizegrip.h>
#include <qspinbox.h>
#include <qsplitter.h>
#include <qstyleoption.h>
#include <qtextedit.h>
#include <qtextstream.h>
#include <qtoolbar.h>
#include <qtoolbutton.h>
#include <qtreeview.h>
#include <qtableview.h>
#include <qwizard.h>
#include <qdebug.h>
#include <qlibrary.h>
#include <qdatetimeedit.h>
#include <qmath.h>
#include <QtWidgets/qgraphicsproxywidget.h>
#include <QtWidgets/qgraphicsview.h>
//
// 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<QObject> pressedButton;
mutable QPointer<QObject> defaultButton;
mutable QPointer<QObject> autoDefaultButton;
struct ButtonState {
int frame;
enum { ButtonDark, ButtonLight } dir;
} buttonState;
mutable QPointer<QFocusFrame> 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

View File

@ -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

View File

@ -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 <qdebug.h>
#include <QtCore/qmath.h>

View File

@ -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 ) {

View File

@ -67,7 +67,7 @@
#include <qdebug.h>
#if defined(Q_WS_MAC) && !defined(QT_NO_EFFECTS) && !defined(QT_NO_STYLE_MAC)
#include <private/qcore_mac_p.h>
#include <QMacStyle>
#include <private/qmacstyle_mac_p.h>
#include <private/qt_cocoa_helpers_mac_p.h>
#endif
#ifndef QT_NO_EFFECTS

View File

@ -63,7 +63,7 @@
#ifdef Q_WS_MAC
#include <private/qapplication_p.h>
#include <private/qt_mac_p.h>
#include <qmacstyle_mac.h>
#include <private/qmacstyle_mac_p.h>
#endif
QT_BEGIN_NAMESPACE

View File

@ -163,7 +163,7 @@
#include <QApplication>
#include <QStyle>
#if defined(Q_WS_MAC) && !defined(QT_NO_STYLE_MAC)
#include <QMacStyle>
#include <private/qmacstyle_mac_p.h>
#endif
#include <QChildEvent>
#include <QResizeEvent>

View File

@ -161,7 +161,7 @@
#include <QScrollBar>
#include <QDebug>
#if defined(Q_WS_MAC) && !defined(QT_NO_STYLE_MAC)
#include <QMacStyle>
#include <private/qmacstyle_mac_p.h>
#endif
#include <QMdiArea>

View File

@ -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

View File

@ -50,9 +50,6 @@
#include <QDialogButtonBox>
#include <qpa/qplatformtheme.h>
#include <private/qguiapplication_p.h>
#if defined(Q_OS_MAC) && !defined(QT_NO_STYLE_MAC)
#include <QMacStyle>
#endif
#define CONVENIENCE_FUNC_SYMS(func) \
{ \

View File

@ -45,9 +45,6 @@
#include <QtWidgets>
#include <private/qgraphicsproxywidget_p.h>
#include <private/qlayoutengine_p.h> // qSmartMin functions...
#if defined(Q_OS_MAC) && !defined(QT_NO_STYLE_MAC)
#include <QMacStyle>
#endif
#include "../../../qtest-config.h"
@ -2721,7 +2718,7 @@ void tst_QGraphicsProxyWidget::childPos()
#if defined(Q_OS_MAC) && !defined(QT_NO_STYLE_MAC)
// The Mac style wants the popup to show up at QPoint(4 - 11, 1).
// See QMacStyle::subControlRect SC_ComboBoxListBoxPopup.
if (qobject_cast<QMacStyle *>(QApplication::style()))
if (QApplication::style()->inherits("QMacStyle"))
expectedXPosition = qreal(4 - 11);
#endif
QCOMPARE(proxyChild->pos().x(), expectedXPosition);

View File

@ -57,10 +57,6 @@
#include <QRadioButton>
#include <private/qlayoutengine_p.h>
#ifdef Q_OS_MAC
# include <QtWidgets/QMacStyle>
#endif
class tst_QLayout : public QObject
{
Q_OBJECT
@ -276,7 +272,7 @@ public:
void tst_QLayout::layoutItemRect()
{
#ifdef Q_OS_MAC
if (qobject_cast<QMacStyle*>(QApplication::style())) {
if (QApplication::style()->inherits("QMacStyle")) {
QWidget *window = new QWidget;
QRadioButton *radio = new QRadioButton(window);
QWidgetItem item(radio);

View File

@ -43,8 +43,6 @@
#include <QtTest/QtTest>
#include <QtWidgets>
#include <qmacstyle_mac.h>
const int N = 1;
enum Size { Normal, Small, Mini };
@ -322,13 +320,13 @@ void tst_QMacStyle::setSize(QWidget *widget, Size size)
{
switch (size) {
case Normal:
QMacStyle::setWidgetSizePolicy(widget, QMacStyle::SizeDefault);
widget->setAttribute(Qt::WA_MacNormalSize, true);
break;
case Small:
QMacStyle::setWidgetSizePolicy(widget, QMacStyle::SizeSmall);
widget->setAttribute(Qt::WA_MacSmallSize, true);
break;
case Mini:
QMacStyle::setWidgetSizePolicy(widget, QMacStyle::SizeMini);
widget->setAttribute(Qt::WA_MacMiniSize, true);
}
}

View File

@ -71,10 +71,6 @@
#include <qmdiarea.h>
#include <qscrollarea.h>
#ifdef Q_OS_MAC
#include <QMacStyle>
#endif
#ifdef Q_OS_WINCE_WM
#include <windows.h>
@ -527,8 +523,9 @@ qDebug("TEST PAINTING");
#ifdef Q_OS_MAC
void tst_QStyle::testMacStyle()
{
QMacStyle mstyle;
QVERIFY(testAllFunctions(&mstyle));
QStyle *mstyle = QStyleFactory::create("Macintosh");
QVERIFY(testAllFunctions(mstyle));
delete mstyle;
}
#endif

View File

@ -60,9 +60,6 @@
#include <qtablewidget.h>
#include <qscrollbar.h>
#include <qboxlayout.h>
#ifdef Q_OS_MAC
#include <qmacstyle_mac.h>
#endif
#include <qstandarditemmodel.h>
#include <qstringlistmodel.h>
@ -450,7 +447,7 @@ void tst_QComboBox::setEditable()
void tst_QComboBox::setPalette()
{
#ifdef Q_OS_MAC
if (qobject_cast<QMacStyle *>(testWidget->style())) {
if (testWidget->style()->inherits("QMacStyle")) {
QSKIP("This test doesn't make sense for pixmap-based styles");
}
#endif

View File

@ -60,7 +60,6 @@
#ifndef QT_NO_OPENGL
#include <QtOpenGL>
#endif
#include <QMacStyle>
#include <QStyleHints>
static const Qt::WindowFlags DefaultWindowFlags
@ -195,7 +194,7 @@ static bool verifyArrangement(QMdiArea *mdiArea, Arrangement arrangement, const
int titleBarHeight = firstSubWindow->style()->pixelMetric(QStyle::PM_TitleBarHeight, &options);
#ifdef Q_OS_MAC
// ### Remove this after the mac style has been fixed
if (qobject_cast<QMacStyle *>(firstSubWindow->style()))
if (firstSubWindow->style()->inherits("QMacStyle"))
titleBarHeight -= 4;
#endif
const QFontMetrics fontMetrics = QFontMetrics(QApplication::font("QMdiSubWindowTitleBar"));

View File

@ -59,9 +59,6 @@
#include <QStyleOptionTitleBar>
#include <QPushButton>
#include <QSizeGrip>
#if defined(Q_OS_MAC) && !defined(QT_NO_STYLE_MAC)
#include <QMacStyle>
#endif
#include "../../../qtest-config.h"
@ -598,7 +595,7 @@ void tst_QMdiSubWindow::showShaded()
QPoint mousePosition(window->width() - qMax(offset, 2), window->height() - qMax(offset, 2));
QWidget *mouseReceiver = 0;
#ifdef Q_OS_MAC
if (qobject_cast<QMacStyle*>(window->style()))
if (window->style()->inherits("QMacStyle"))
mouseReceiver = qFindChild<QSizeGrip *>(window);
else
#endif
@ -1704,7 +1701,7 @@ void tst_QMdiSubWindow::fixedMinMaxSize()
int minimizedHeight = subWindow->style()->pixelMetric(QStyle::PM_TitleBarHeight, &options);
#if defined(Q_OS_MAC) && !defined(QT_NO_STYLE_MAC)
// ### Remove this after mac style has been fixed
if (qobject_cast<QMacStyle *>(subWindow->style()))
if (subWindow->style()->inherits("QMacStyle"))
minimizedHeight -= 4;
#endif
if (!subWindow->style()->styleHint(QStyle::SH_TitleBar_NoBorder, &options, subWindow))