Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qmacstyle_mac.mm File Reference

(ed3d2ed1ca5360565d7fc7ef5307819a54035a53)

#include <AppKit/AppKit.h>
#include "qmacstyle_mac_p.h"
#include "qmacstyle_mac_p_p.h"
#include <QtCore/qoperatingsystemversion.h>
#include <QtCore/qvariant.h>
#include <QtCore/qvarlengtharray.h>
#include <QtCore/qloggingcategory.h>
#include <QtCore/private/qcore_mac_p.h>
#include <QtGui/qpainterpath.h>
#include <QtGui/qstylehints.h>
#include <QtGui/private/qcoregraphics_p.h>
#include <QtGui/qpa/qplatformfontdatabase.h>
#include <QtGui/qpa/qplatformtheme.h>
#include <QtWidgets/private/qstyleanimation_p.h>
#include <QtGui/private/qmacstyle_p.h>
#include <iterator>
#include <cmath>
Include dependency graph for qmacstyle_mac.mm:

Go to the source code of this file.

Classes

category  QT_MANGLE_NAMESPACE(QIndeterminateProgressIndicator)
category  QT_MANGLE_NAMESPACE(QVerticalSplitView)
category  QT_MANGLE_NAMESPACE(QDarkNSBox)

Macros

#define QMAC_QAQUASTYLE_SIZE_CONSTRAIN

Enumerations

enum  QAquaMetric {
  CheckBoxHeight = 0 , CheckBoxWidth , EditTextFrameOutset , FocusRectOutset ,
  HSliderHeight , HSliderTickHeight , LargeProgressBarThickness , ListHeaderHeight ,
  MenuSeparatorHeight , MiniCheckBoxHeight , MiniCheckBoxWidth , MiniHSliderHeight ,
  MiniHSliderTickHeight , MiniPopupButtonHeight , MiniPushButtonHeight , MiniRadioButtonHeight ,
  MiniRadioButtonWidth , MiniVSliderTickWidth , MiniVSliderWidth , NormalProgressBarThickness ,
  PopupButtonHeight , ProgressBarShadowOutset , PushButtonHeight , RadioButtonHeight ,
  RadioButtonWidth , SeparatorSize , SmallCheckBoxHeight , SmallCheckBoxWidth ,
  SmallHSliderHeight , SmallHSliderTickHeight , SmallPopupButtonHeight , SmallProgressBarShadowOutset ,
  SmallPushButtonHeight , SmallRadioButtonHeight , SmallRadioButtonWidth , SmallVSliderTickWidth ,
  SmallVSliderWidth , VSliderTickWidth , VSliderWidth , CheckBoxHeight = 0 ,
  CheckBoxWidth , EditTextFrameOutset , FocusRectOutset , HSliderHeight ,
  HSliderTickHeight , LargeProgressBarThickness , ListHeaderHeight , MenuSeparatorHeight ,
  MiniCheckBoxHeight , MiniCheckBoxWidth , MiniHSliderHeight , MiniHSliderTickHeight ,
  MiniPopupButtonHeight , MiniPushButtonHeight , MiniRadioButtonHeight , MiniRadioButtonWidth ,
  MiniVSliderTickWidth , MiniVSliderWidth , NormalProgressBarThickness , PopupButtonHeight ,
  ProgressBarShadowOutset , PushButtonHeight , RadioButtonHeight , RadioButtonWidth ,
  SeparatorSize , SmallCheckBoxHeight , SmallCheckBoxWidth , SmallHSliderHeight ,
  SmallHSliderTickHeight , SmallPopupButtonHeight , SmallProgressBarShadowOutset , SmallPushButtonHeight ,
  SmallRadioButtonHeight , SmallRadioButtonWidth , SmallVSliderTickWidth , SmallVSliderWidth ,
  VSliderTickWidth , VSliderWidth
}
enum  QAquaMetric {
  CheckBoxHeight = 0 , CheckBoxWidth , EditTextFrameOutset , FocusRectOutset ,
  HSliderHeight , HSliderTickHeight , LargeProgressBarThickness , ListHeaderHeight ,
  MenuSeparatorHeight , MiniCheckBoxHeight , MiniCheckBoxWidth , MiniHSliderHeight ,
  MiniHSliderTickHeight , MiniPopupButtonHeight , MiniPushButtonHeight , MiniRadioButtonHeight ,
  MiniRadioButtonWidth , MiniVSliderTickWidth , MiniVSliderWidth , NormalProgressBarThickness ,
  PopupButtonHeight , ProgressBarShadowOutset , PushButtonHeight , RadioButtonHeight ,
  RadioButtonWidth , SeparatorSize , SmallCheckBoxHeight , SmallCheckBoxWidth ,
  SmallHSliderHeight , SmallHSliderTickHeight , SmallPopupButtonHeight , SmallProgressBarShadowOutset ,
  SmallPushButtonHeight , SmallRadioButtonHeight , SmallRadioButtonWidth , SmallVSliderTickWidth ,
  SmallVSliderWidth , VSliderTickWidth , VSliderWidth , CheckBoxHeight = 0 ,
  CheckBoxWidth , EditTextFrameOutset , FocusRectOutset , HSliderHeight ,
  HSliderTickHeight , LargeProgressBarThickness , ListHeaderHeight , MenuSeparatorHeight ,
  MiniCheckBoxHeight , MiniCheckBoxWidth , MiniHSliderHeight , MiniHSliderTickHeight ,
  MiniPopupButtonHeight , MiniPushButtonHeight , MiniRadioButtonHeight , MiniRadioButtonWidth ,
  MiniVSliderTickWidth , MiniVSliderWidth , NormalProgressBarThickness , PopupButtonHeight ,
  ProgressBarShadowOutset , PushButtonHeight , RadioButtonHeight , RadioButtonWidth ,
  SeparatorSize , SmallCheckBoxHeight , SmallCheckBoxWidth , SmallHSliderHeight ,
  SmallHSliderTickHeight , SmallPopupButtonHeight , SmallProgressBarShadowOutset , SmallPushButtonHeight ,
  SmallRadioButtonHeight , SmallRadioButtonWidth , SmallVSliderTickWidth , SmallVSliderWidth ,
  VSliderTickWidth , VSliderWidth
}

Functions

QT_USE_NAMESPACE Q_STATIC_LOGGING_CATEGORY (lcMacStyle, "qt.widgets.styles.macos")
 QT_NAMESPACE_ALIAS_OBJC_CLASS (QIndeterminateProgressIndicator)
 QT_NAMESPACE_ALIAS_OBJC_CLASS (QVerticalSplitView)
 QT_NAMESPACE_ALIAS_OBJC_CLASS (QDarkNSBox)
static bool isDarkMode ()
void adjustPushButtonShadowMargins (QRectF &rect, QStyleHelper::WidgetSizePolicy size)
static bool setupScroller (NSScroller *scroller, const QStyleOptionSlider *sb)
static bool setupSlider (NSSlider *slider, const QStyleOptionSlider *sl)
static bool isInMacUnifiedToolbarArea (QWindow *window, int windowY)
void drawTickMarks (CGContextRef ctx, NSSlider *nsSlider, const QStyleOptionSlider *sliderOpt)
void drawSliderKnob (CGContextRef ctx, NSSlider *slider)
static QStyleHelper::WidgetSizePolicy getControlSize (const QStyleOption *option, const QWidget *widget)
static QString qt_mac_removeMnemonics (const QString &original)
static bool qt_macWindowMainWindow (const QWidget *window)
static NSUserInterfaceLayoutDirection qt_macLayoutDirectionFromQt (Qt::LayoutDirection direction)
static int qt_mac_aqua_get_metric (QAquaMetric m)
static QSize qt_aqua_get_known_size (QStyle::ContentsType ct, const QStyleOption *opt, const QWidget *widg, QSize szHint, QStyleHelper::WidgetSizePolicy sz)
static CGRect qt_alignmentRectForFrame (CGRect rect, QStyleHelper::WidgetSizePolicy size, QMacStylePrivate::CocoaControlType ct)
static QStyleHelper::WidgetSizePolicy qt_aqua_guess_size (const QWidget *widg, QSize large, QSize small, QSize mini)
size_t qHash (const QMacStylePrivate::CocoaControl &cw, size_t seed=0)
QMacStylePrivate::CocoaControlType cocoaControlType (const QStyleOption *opt, const QWidget *w)
static QPixmap darkenPixmap (const QPixmap &pixmap)
static void setLayoutItemMargins (int left, int top, int right, int bottom, QRect *rect, Qt::LayoutDirection dir)

Variables

const int pushButtonBevelRectOffsets [3]
static const QColor titlebarSeparatorLineActive (111, 111, 111)
static const QColor titlebarSeparatorLineInactive (131, 131, 131)
static const QColor darkModeSeparatorLine (88, 88, 88)
static const int DisclosureOffset = 4
static const qreal titleBarIconTitleSpacing = 5
static const qreal titleBarTitleRightMargin = 12
static const qreal titleBarButtonSpacing = 8
static const int headerSectionArrowHeight = 6
static const int headerSectionSeparatorInset = 2
static const QMarginsF comboBoxFocusRingMargins [3]
static const QMarginsF pullDownButtonShadowMargins [3]
static const QMarginsF pushButtonShadowMargins [3]
static const qreal comboBoxDefaultHeight [3]
static const qreal pushButtonDefaultHeight [3]
static const qreal popupButtonDefaultHeight [3]
static const int toolButtonArrowSize = 7
static const int toolButtonArrowMargin = 2
static const qreal focusRingWidth = 3.5
const int macItemFrame = 2
const int macItemHMargin = 3
const int macRightBorder = 12
static const int qt_mac_aqua_metrics []
return ret

Macro Definition Documentation

◆ QMAC_QAQUASTYLE_SIZE_CONSTRAIN

#define QMAC_QAQUASTYLE_SIZE_CONSTRAIN

Definition at line 15 of file qmacstyle_mac.mm.

Enumeration Type Documentation

◆ QAquaMetric [1/2]

Enumerator
CheckBoxHeight 
CheckBoxWidth 
EditTextFrameOutset 
FocusRectOutset 
HSliderHeight 
HSliderTickHeight 
LargeProgressBarThickness 
ListHeaderHeight 
MenuSeparatorHeight 
MiniCheckBoxHeight 
MiniCheckBoxWidth 
MiniHSliderHeight 
MiniHSliderTickHeight 
MiniPopupButtonHeight 
MiniPushButtonHeight 
MiniRadioButtonHeight 
MiniRadioButtonWidth 
MiniVSliderTickWidth 
MiniVSliderWidth 
NormalProgressBarThickness 
PopupButtonHeight 
ProgressBarShadowOutset 
PushButtonHeight 
RadioButtonHeight 
RadioButtonWidth 
SeparatorSize 
SmallCheckBoxHeight 
SmallCheckBoxWidth 
SmallHSliderHeight 
SmallHSliderTickHeight 
SmallPopupButtonHeight 
SmallProgressBarShadowOutset 
SmallPushButtonHeight 
SmallRadioButtonHeight 
SmallRadioButtonWidth 
SmallVSliderTickWidth 
SmallVSliderWidth 
VSliderTickWidth 
VSliderWidth 
CheckBoxHeight 
CheckBoxWidth 
EditTextFrameOutset 
FocusRectOutset 
HSliderHeight 
HSliderTickHeight 
LargeProgressBarThickness 
ListHeaderHeight 
MenuSeparatorHeight 
MiniCheckBoxHeight 
MiniCheckBoxWidth 
MiniHSliderHeight 
MiniHSliderTickHeight 
MiniPopupButtonHeight 
MiniPushButtonHeight 
MiniRadioButtonHeight 
MiniRadioButtonWidth 
MiniVSliderTickWidth 
MiniVSliderWidth 
NormalProgressBarThickness 
PopupButtonHeight 
ProgressBarShadowOutset 
PushButtonHeight 
RadioButtonHeight 
RadioButtonWidth 
SeparatorSize 
SmallCheckBoxHeight 
SmallCheckBoxWidth 
SmallHSliderHeight 
SmallHSliderTickHeight 
SmallPopupButtonHeight 
SmallProgressBarShadowOutset 
SmallPushButtonHeight 
SmallRadioButtonHeight 
SmallRadioButtonWidth 
SmallVSliderTickWidth 
SmallVSliderWidth 
VSliderTickWidth 
VSliderWidth 

Definition at line 788 of file qmacstyle_mac.mm.

◆ QAquaMetric [2/2]

Enumerator
CheckBoxHeight 
CheckBoxWidth 
EditTextFrameOutset 
FocusRectOutset 
HSliderHeight 
HSliderTickHeight 
LargeProgressBarThickness 
ListHeaderHeight 
MenuSeparatorHeight 
MiniCheckBoxHeight 
MiniCheckBoxWidth 
MiniHSliderHeight 
MiniHSliderTickHeight 
MiniPopupButtonHeight 
MiniPushButtonHeight 
MiniRadioButtonHeight 
MiniRadioButtonWidth 
MiniVSliderTickWidth 
MiniVSliderWidth 
NormalProgressBarThickness 
PopupButtonHeight 
ProgressBarShadowOutset 
PushButtonHeight 
RadioButtonHeight 
RadioButtonWidth 
SeparatorSize 
SmallCheckBoxHeight 
SmallCheckBoxWidth 
SmallHSliderHeight 
SmallHSliderTickHeight 
SmallPopupButtonHeight 
SmallProgressBarShadowOutset 
SmallPushButtonHeight 
SmallRadioButtonHeight 
SmallRadioButtonWidth 
SmallVSliderTickWidth 
SmallVSliderWidth 
VSliderTickWidth 
VSliderWidth 
CheckBoxHeight 
CheckBoxWidth 
EditTextFrameOutset 
FocusRectOutset 
HSliderHeight 
HSliderTickHeight 
LargeProgressBarThickness 
ListHeaderHeight 
MenuSeparatorHeight 
MiniCheckBoxHeight 
MiniCheckBoxWidth 
MiniHSliderHeight 
MiniHSliderTickHeight 
MiniPopupButtonHeight 
MiniPushButtonHeight 
MiniRadioButtonHeight 
MiniRadioButtonWidth 
MiniVSliderTickWidth 
MiniVSliderWidth 
NormalProgressBarThickness 
PopupButtonHeight 
ProgressBarShadowOutset 
PushButtonHeight 
RadioButtonHeight 
RadioButtonWidth 
SeparatorSize 
SmallCheckBoxHeight 
SmallCheckBoxWidth 
SmallHSliderHeight 
SmallHSliderTickHeight 
SmallPopupButtonHeight 
SmallProgressBarShadowOutset 
SmallPushButtonHeight 
SmallRadioButtonHeight 
SmallRadioButtonWidth 
SmallVSliderTickWidth 
SmallVSliderWidth 
VSliderTickWidth 
VSliderWidth 

Definition at line 788 of file qmacstyle_mac.mm.

Function Documentation

◆ adjustPushButtonShadowMargins()

void adjustPushButtonShadowMargins ( QRectF & rect,
QStyleHelper::WidgetSizePolicy size )

Definition at line 331 of file qmacstyle_mac.mm.

◆ cocoaControlType()

QMacStylePrivate::CocoaControlType cocoaControlType ( const QStyleOption * opt,
const QWidget * w )

Definition at line 1812 of file qmacstyle_mac.mm.

◆ darkenPixmap()

QPixmap darkenPixmap ( const QPixmap & pixmap)
static

Definition at line 3694 of file qmacstyle_mac.mm.

◆ drawSliderKnob()

void drawSliderKnob ( CGContextRef ctx,
NSSlider * slider )

Definition at line 659 of file qmacstyle_mac.mm.

◆ drawTickMarks()

void drawTickMarks ( CGContextRef ctx,
NSSlider * nsSlider,
const QStyleOptionSlider * sliderOpt )

Definition at line 588 of file qmacstyle_mac.mm.

◆ getControlSize()

QStyleHelper::WidgetSizePolicy getControlSize ( const QStyleOption * option,
const QWidget * widget )
static

Definition at line 702 of file qmacstyle_mac.mm.

◆ isDarkMode()

bool isDarkMode ( )
inlinestatic

Definition at line 173 of file qmacstyle_mac.mm.

Referenced by QMacStylePrivate::cocoaControl(), QMacStyle::drawControl(), QMacStylePrivate::drawFocusRing(), and QMacStyle::drawPrimitive().

Here is the caller graph for this function:

◆ isInMacUnifiedToolbarArea()

bool isInMacUnifiedToolbarArea ( QWindow * window,
int windowY )
static

Definition at line 427 of file qmacstyle_mac.mm.

◆ Q_STATIC_LOGGING_CATEGORY()

QT_USE_NAMESPACE Q_STATIC_LOGGING_CATEGORY ( lcMacStyle ,
"qt.widgets.styles.macos"  )

◆ qHash()

size_t qHash ( const QMacStylePrivate::CocoaControl & cw,
size_t seed = 0 )

Definition at line 1664 of file qmacstyle_mac.mm.

◆ qt_alignmentRectForFrame()

CGRect qt_alignmentRectForFrame ( CGRect rect,
QStyleHelper::WidgetSizePolicy size,
QMacStylePrivate::CocoaControlType ct )
static

Definition at line 1178 of file qmacstyle_mac.mm.

◆ qt_aqua_get_known_size()

QSize qt_aqua_get_known_size ( QStyle::ContentsType ct,
const QStyleOption * opt,
const QWidget * widg,
QSize szHint,
QStyleHelper::WidgetSizePolicy sz )
static

Definition at line 883 of file qmacstyle_mac.mm.

References HSliderHeight, HSliderTickHeight, MiniHSliderHeight, MiniHSliderTickHeight, MiniPopupButtonHeight, MiniVSliderTickWidth, MiniVSliderWidth, PopupButtonHeight, qt_mac_aqua_get_metric(), SmallHSliderHeight, SmallHSliderTickHeight, SmallPopupButtonHeight, SmallVSliderTickWidth, SmallVSliderWidth, VSliderTickWidth, and VSliderWidth.

Here is the call graph for this function:

◆ qt_aqua_guess_size()

QStyleHelper::WidgetSizePolicy qt_aqua_guess_size ( const QWidget * widg,
QSize large,
QSize small,
QSize mini )
static

Definition at line 1225 of file qmacstyle_mac.mm.

◆ qt_mac_aqua_get_metric()

int qt_mac_aqua_get_metric ( QAquaMetric m)
inlinestatic

Definition at line 875 of file qmacstyle_mac.mm.

References MiniRadioButtonWidth, and qt_mac_aqua_metrics.

Referenced by QMacStyle::pixelMetric(), qt_aqua_get_known_size(), and QMacStyle::sizeFromContents().

Here is the caller graph for this function:

◆ qt_mac_removeMnemonics()

QString qt_mac_removeMnemonics ( const QString & original)
static

Definition at line 719 of file qmacstyle_mac.mm.

◆ qt_macLayoutDirectionFromQt()

NSUserInterfaceLayoutDirection qt_macLayoutDirectionFromQt ( Qt::LayoutDirection direction)
static

Definition at line 765 of file qmacstyle_mac.mm.

◆ qt_macWindowMainWindow()

bool qt_macWindowMainWindow ( const QWidget * window)
static

Definition at line 753 of file qmacstyle_mac.mm.

◆ QT_NAMESPACE_ALIAS_OBJC_CLASS() [1/3]

QT_NAMESPACE_ALIAS_OBJC_CLASS ( QDarkNSBox )

◆ QT_NAMESPACE_ALIAS_OBJC_CLASS() [2/3]

QT_NAMESPACE_ALIAS_OBJC_CLASS ( QIndeterminateProgressIndicator )

◆ QT_NAMESPACE_ALIAS_OBJC_CLASS() [3/3]

QT_NAMESPACE_ALIAS_OBJC_CLASS ( QVerticalSplitView )

◆ setLayoutItemMargins()

void setLayoutItemMargins ( int left,
int top,
int right,
int bottom,
QRect * rect,
Qt::LayoutDirection dir )
static

Definition at line 4920 of file qmacstyle_mac.mm.

◆ setupScroller()

bool setupScroller ( NSScroller * scroller,
const QStyleOptionSlider * sb )
static

Definition at line 363 of file qmacstyle_mac.mm.

◆ setupSlider()

bool setupSlider ( NSSlider * slider,
const QStyleOptionSlider * sl )
static

Definition at line 380 of file qmacstyle_mac.mm.

Variable Documentation

◆ comboBoxDefaultHeight

const qreal comboBoxDefaultHeight
static
Initial value:
= {
26, 22, 19
}

Definition at line 346 of file qmacstyle_mac.mm.

◆ comboBoxFocusRingMargins

const QMarginsF comboBoxFocusRingMargins
static
Initial value:
= {
{ 0.5, 2, 3.5, 4 },
{ 0.5, 1, 2.5, 4 },
{ 0.5, 1.5, 2.5, 3.5 }
}

Definition at line 313 of file qmacstyle_mac.mm.

◆ darkModeSeparatorLine

const QColor darkModeSeparatorLine ( 88 ,
88 ,
88  )
static

◆ DisclosureOffset

const int DisclosureOffset = 4
static

Definition at line 236 of file qmacstyle_mac.mm.

Referenced by QMacStyle::drawPrimitive(), and QMacStyle::subElementRect().

◆ focusRingWidth

const qreal focusRingWidth = 3.5
static

Definition at line 361 of file qmacstyle_mac.mm.

◆ headerSectionArrowHeight

const int headerSectionArrowHeight = 6
static

Definition at line 309 of file qmacstyle_mac.mm.

Referenced by QMacStyle::subElementRect().

◆ headerSectionSeparatorInset

const int headerSectionSeparatorInset = 2
static

Definition at line 310 of file qmacstyle_mac.mm.

Referenced by QMacStyle::drawControl().

◆ macItemFrame

const int macItemFrame = 2

Definition at line 780 of file qmacstyle_mac.mm.

Referenced by QMacStyle::drawControl().

◆ macItemHMargin

const int macItemHMargin = 3

Definition at line 781 of file qmacstyle_mac.mm.

Referenced by QMacStyle::drawControl().

◆ macRightBorder

const int macRightBorder = 12

Definition at line 782 of file qmacstyle_mac.mm.

Referenced by QMacStyle::drawControl().

◆ popupButtonDefaultHeight

const qreal popupButtonDefaultHeight
static
Initial value:
= {
26, 22, 15
}

Definition at line 354 of file qmacstyle_mac.mm.

◆ pullDownButtonShadowMargins

const QMarginsF pullDownButtonShadowMargins
static
Initial value:
= {
{ 0.5, -1, 0.5, 2 },
{ 0.5, -1.5, 0.5, 2.5 },
{ 0.5, 0, 0.5, 1 }
}

Definition at line 319 of file qmacstyle_mac.mm.

◆ pushButtonBevelRectOffsets

const int pushButtonBevelRectOffsets
Initial value:

Definition at line 167 of file qmacstyle_mac.mm.

◆ pushButtonDefaultHeight

const qreal pushButtonDefaultHeight
static
Initial value:
= {
32, 28, 24
}

Definition at line 350 of file qmacstyle_mac.mm.

◆ pushButtonShadowMargins

const QMarginsF pushButtonShadowMargins
static
Initial value:
= {
{ 1.5, -1.5, 1.5, 4.5 },
{ 1.5, -1, 1.5, 4 },
{ 1.5, 0.5, 1.5, 2.5 }
}

Definition at line 325 of file qmacstyle_mac.mm.

◆ qt_mac_aqua_metrics

const int qt_mac_aqua_metrics
static

Definition at line 832 of file qmacstyle_mac.mm.

Referenced by qt_mac_aqua_get_metric().

◆ ret

return ret

Definition at line 1175 of file qmacstyle_mac.mm.

◆ titleBarButtonSpacing

const qreal titleBarButtonSpacing = 8
static

Definition at line 240 of file qmacstyle_mac.mm.

◆ titleBarIconTitleSpacing

const qreal titleBarIconTitleSpacing = 5
static

Definition at line 238 of file qmacstyle_mac.mm.

◆ titlebarSeparatorLineActive

const QColor titlebarSeparatorLineActive ( 111 ,
111 ,
111  )
static

◆ titlebarSeparatorLineInactive

const QColor titlebarSeparatorLineInactive ( 131 ,
131 ,
131  )
static

◆ titleBarTitleRightMargin

const qreal titleBarTitleRightMargin = 12
static

Definition at line 239 of file qmacstyle_mac.mm.

◆ toolButtonArrowMargin

const int toolButtonArrowMargin = 2
static

◆ toolButtonArrowSize

const int toolButtonArrowSize = 7
static