diff options
author | Jake Petroules <jake.petroules@qt.io> | 2017-02-27 20:08:29 -0800 |
---|---|---|
committer | Jake Petroules <jake.petroules@qt.io> | 2017-03-03 21:55:27 +0000 |
commit | 7b796116ff4bf6398a551b24e4c2b19d449bcdc2 (patch) | |
tree | ac0794a30416edcc5b9a0243f574ac8f3725f3ad /src/widgets/styles/qstylehelper.cpp | |
parent | f892318898d61c26bf762a44e1e60579a7addef3 (diff) |
Move widget size policy methods to QStyleHelper
While they're relatively Mac-specific, conceivably multiple style
implementations could use them, and it breaks a tight coupling between
QStyleOption and QMacStyle.
Change-Id: I5915c519129538a9ac39a34d5cfc3aeb838145d6
Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io>
Diffstat (limited to 'src/widgets/styles/qstylehelper.cpp')
-rw-r--r-- | src/widgets/styles/qstylehelper.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/widgets/styles/qstylehelper.cpp b/src/widgets/styles/qstylehelper.cpp index 9b381c383b..b315c14858 100644 --- a/src/widgets/styles/qstylehelper.cpp +++ b/src/widgets/styles/qstylehelper.cpp @@ -427,5 +427,34 @@ QWindow *styleObjectWindow(QObject *so) return 0; } +void setWidgetSizePolicy(const QWidget *widget, WidgetSizePolicy policy) +{ + QWidget *wadget = const_cast<QWidget *>(widget); + wadget->setAttribute(Qt::WA_MacNormalSize, policy == SizeLarge); + wadget->setAttribute(Qt::WA_MacSmallSize, policy == SizeSmall); + wadget->setAttribute(Qt::WA_MacMiniSize, policy == SizeMini); +} + +WidgetSizePolicy widgetSizePolicy(const QWidget *widget, const QStyleOption *opt) +{ + while (widget) { + if (widget->testAttribute(Qt::WA_MacMiniSize)) { + return SizeMini; + } else if (widget->testAttribute(Qt::WA_MacSmallSize)) { + return SizeSmall; + } else if (widget->testAttribute(Qt::WA_MacNormalSize)) { + return SizeLarge; + } + widget = widget->parentWidget(); + } + + if (opt && opt->state & QStyle::State_Mini) + return SizeMini; + else if (opt && opt->state & QStyle::State_Small) + return SizeSmall; + + return SizeDefault; +} + } QT_END_NAMESPACE |