Widgets: compile without features tabwidget/tabbar/toolbutton

Move the usage of the corresponding QStyleOption classes into a
QT_CONFIG() guard to fix compilation when these options are disabled.

Change-Id: I68e791f20bbc8389974878e765b08a97eb347b92
Reviewed-by: Axel Spoerl <axel.spoerl@qt.io>
(cherry picked from commit 0d4e04416554d9b2f03f325616052be06dd85a44)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Christian Ehrlicher 2025-04-30 10:22:12 +02:00 committed by Qt Cherry-pick Bot
parent 749bb5240a
commit 4630c92cea
6 changed files with 46 additions and 3 deletions

View File

@ -759,6 +759,7 @@ void QWindows11Style::drawPrimitive(PrimitiveElement element, const QStyleOption
break; break;
} }
case PE_FrameTabWidget: case PE_FrameTabWidget:
#if QT_CONFIG(tabwidget)
if (const QStyleOptionTabWidgetFrame *frame = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(option)) { if (const QStyleOptionTabWidgetFrame *frame = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(option)) {
QRectF frameRect = frame->rect.marginsRemoved(QMargins(0,0,0,0)); QRectF frameRect = frame->rect.marginsRemoved(QMargins(0,0,0,0));
painter->setPen(Qt::NoPen); painter->setPen(Qt::NoPen);
@ -769,6 +770,7 @@ void QWindows11Style::drawPrimitive(PrimitiveElement element, const QStyleOption
painter->setBrush(Qt::NoBrush); painter->setBrush(Qt::NoBrush);
painter->drawRoundedRect(frameRect.marginsRemoved(QMarginsF(0.5,0.5,0.5,0.5)), secondLevelRoundingRadius, secondLevelRoundingRadius); painter->drawRoundedRect(frameRect.marginsRemoved(QMarginsF(0.5,0.5,0.5,0.5)), secondLevelRoundingRadius, secondLevelRoundingRadius);
} }
#endif // QT_CONFIG(tabwidget)
break; break;
case PE_FrameGroupBox: case PE_FrameGroupBox:
if (const QStyleOptionFrame *frame = qstyleoption_cast<const QStyleOptionFrame *>(option)) { if (const QStyleOptionFrame *frame = qstyleoption_cast<const QStyleOptionFrame *>(option)) {
@ -1158,6 +1160,7 @@ void QWindows11Style::drawControl(ControlElement element, const QStyleOption *op
} }
break; break;
case QStyle::CE_TabBarTabShape: case QStyle::CE_TabBarTabShape:
#if QT_CONFIG(tabbar)
if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) { if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) {
QRectF tabRect = tab->rect.marginsRemoved(QMargins(2,2,0,0)); QRectF tabRect = tab->rect.marginsRemoved(QMargins(2,2,0,0));
painter->setPen(Qt::NoPen); painter->setPen(Qt::NoPen);
@ -1176,8 +1179,10 @@ void QWindows11Style::drawControl(ControlElement element, const QStyleOption *op
painter->drawRoundedRect(tabRect.adjusted(0.5,0.5,-0.5,-0.5),2,2); painter->drawRoundedRect(tabRect.adjusted(0.5,0.5,-0.5,-0.5),2,2);
} }
#endif // QT_CONFIG(tabbar)
break; break;
case CE_ToolButtonLabel: case CE_ToolButtonLabel:
#if QT_CONFIG(toolbutton)
if (const QStyleOptionToolButton *toolbutton if (const QStyleOptionToolButton *toolbutton
= qstyleoption_cast<const QStyleOptionToolButton *>(option)) { = qstyleoption_cast<const QStyleOptionToolButton *>(option)) {
QRect rect = toolbutton->rect; QRect rect = toolbutton->rect;
@ -1261,6 +1266,7 @@ void QWindows11Style::drawControl(ControlElement element, const QStyleOption *op
} }
} }
} }
#endif // QT_CONFIG(toolbutton)
break; break;
case QStyle::CE_ShapedFrame: case QStyle::CE_ShapedFrame:
if (const QStyleOptionFrame *f = qstyleoption_cast<const QStyleOptionFrame *>(option)) { if (const QStyleOptionFrame *f = qstyleoption_cast<const QStyleOptionFrame *>(option)) {

View File

@ -1732,6 +1732,7 @@ void QWindowsVistaStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt
#endif // QT_CONFIG(dockwidget) #endif // QT_CONFIG(dockwidget)
case PE_FrameTabWidget: case PE_FrameTabWidget:
#if QT_CONFIG(tabwidget)
if (const auto *tab = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(option)) { if (const auto *tab = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(option)) {
themeNumber = QWindowsVistaStylePrivate::TabTheme; themeNumber = QWindowsVistaStylePrivate::TabTheme;
partId = TABP_PANE; partId = TABP_PANE;
@ -1789,7 +1790,7 @@ void QWindowsVistaStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt
} }
} }
break; break;
#endif // QT_CONFIG(tabwidget)
case PE_FrameStatusBarItem: case PE_FrameStatusBarItem:
themeNumber = QWindowsVistaStylePrivate::StatusTheme; themeNumber = QWindowsVistaStylePrivate::StatusTheme;
partId = SP_PANE; partId = SP_PANE;
@ -2001,6 +2002,7 @@ void QWindowsVistaStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt
} }
case PE_FrameTabBarBase: case PE_FrameTabBarBase:
#if QT_CONFIG(tabbar)
if (const auto *tbb = qstyleoption_cast<const QStyleOptionTabBarBase *>(option)) { if (const auto *tbb = qstyleoption_cast<const QStyleOptionTabBarBase *>(option)) {
painter->save(); painter->save();
switch (tbb->shape) { switch (tbb->shape) {
@ -2031,6 +2033,7 @@ void QWindowsVistaStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt
} }
painter->restore(); painter->restore();
} }
#endif // QT_CONFIG(tabbar)
return; return;
case PE_Widget: { case PE_Widget: {
@ -2533,11 +2536,14 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption
return; return;
case CE_TabBarTab: case CE_TabBarTab:
#if QT_CONFIG(tabwidget)
if (const auto *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) if (const auto *tab = qstyleoption_cast<const QStyleOptionTab *>(option))
stateId = tab->state & State_Enabled ? TIS_NORMAL : TIS_DISABLED; stateId = tab->state & State_Enabled ? TIS_NORMAL : TIS_DISABLED;
#endif // QT_CONFIG(tabwidget)
break; break;
case CE_TabBarTabShape: case CE_TabBarTabShape:
#if QT_CONFIG(tabwidget)
if (const auto *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) { if (const auto *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) {
themeNumber = QWindowsVistaStylePrivate::TabTheme; themeNumber = QWindowsVistaStylePrivate::TabTheme;
const bool isDisabled = !(tab->state & State_Enabled); const bool isDisabled = !(tab->state & State_Enabled);
@ -2639,6 +2645,7 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption
} }
} }
} }
#endif // QT_CONFIG(tabwidget)
break; break;
case CE_ProgressBarGroove: { case CE_ProgressBarGroove: {
@ -3015,6 +3022,7 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption
} }
case CE_ToolBar: case CE_ToolBar:
#if QT_CONFIG(toolbar)
if (const auto *toolbar = qstyleoption_cast<const QStyleOptionToolBar *>(option)) { if (const auto *toolbar = qstyleoption_cast<const QStyleOptionToolBar *>(option)) {
QPalette pal = option->palette; QPalette pal = option->palette;
pal.setColor(QPalette::Dark, option->palette.window().color().darker(130)); pal.setColor(QPalette::Dark, option->palette.window().color().darker(130));
@ -3022,6 +3030,7 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption
copyOpt.palette = pal; copyOpt.palette = pal;
QWindowsStyle::drawControl(element, &copyOpt, painter, widget); QWindowsStyle::drawControl(element, &copyOpt, painter, widget);
} }
#endif // QT_CONFIG(toolbar)
return; return;
#if QT_CONFIG(dockwidget) #if QT_CONFIG(dockwidget)
@ -4159,6 +4168,7 @@ QRect QWindowsVistaStyle::subElementRect(SubElement element, const QStyleOption
case SE_TabWidgetTabContents: case SE_TabWidgetTabContents:
rect = QWindowsStyle::subElementRect(element, option, widget); rect = QWindowsStyle::subElementRect(element, option, widget);
#if QT_CONFIG(tabwidget)
if (qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(option)) { if (qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(option)) {
rect = QWindowsStyle::subElementRect(element, option, widget); rect = QWindowsStyle::subElementRect(element, option, widget);
if (const QTabWidget *tabWidget = qobject_cast<const QTabWidget *>(widget)) { if (const QTabWidget *tabWidget = qobject_cast<const QTabWidget *>(widget)) {
@ -4167,10 +4177,12 @@ QRect QWindowsVistaStyle::subElementRect(SubElement element, const QStyleOption
rect.adjust(0, 0, -2, -2); rect.adjust(0, 0, -2, -2);
} }
} }
#endif // QT_CONFIG(tabwidget)
break; break;
case SE_TabWidgetTabBar: { case SE_TabWidgetTabBar: {
rect = QWindowsStyle::subElementRect(element, option, widget); rect = QWindowsStyle::subElementRect(element, option, widget);
#if QT_CONFIG(tabwidget)
const auto *twfOption = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(option); const auto *twfOption = qstyleoption_cast<const QStyleOptionTabWidgetFrame *>(option);
if (twfOption && twfOption->direction == Qt::RightToLeft if (twfOption && twfOption->direction == Qt::RightToLeft
&& (twfOption->shape == QTabBar::RoundedNorth && (twfOption->shape == QTabBar::RoundedNorth
@ -4183,6 +4195,7 @@ QRect QWindowsVistaStyle::subElementRect(SubElement element, const QStyleOption
int borderThickness = proxy()->pixelMetric(PM_DefaultFrameWidth, option, widget); int borderThickness = proxy()->pixelMetric(PM_DefaultFrameWidth, option, widget);
rect.adjust(-overlap + borderThickness, 0, -overlap + borderThickness, 0); rect.adjust(-overlap + borderThickness, 0, -overlap + borderThickness, 0);
} }
#endif // QT_CONFIG(tabwidget)
break; break;
} }
@ -4521,6 +4534,7 @@ int QWindowsVistaStyle::pixelMetric(PixelMetric metric, const QStyleOption *opti
res = 2; res = 2;
break; break;
#if QT_CONFIG(tabbar)
case PM_TabBarBaseOverlap: case PM_TabBarBaseOverlap:
if (const auto *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) { if (const auto *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) {
switch (tab->shape) { switch (tab->shape) {
@ -4541,6 +4555,7 @@ int QWindowsVistaStyle::pixelMetric(PixelMetric metric, const QStyleOption *opti
} }
} }
break; break;
#endif // QT_CONFIG(tabbar)
case PM_SplitterWidth: case PM_SplitterWidth:
res = QStyleHelper::dpiScaled(5., option); res = QStyleHelper::dpiScaled(5., option);
@ -4561,10 +4576,12 @@ int QWindowsVistaStyle::pixelMetric(PixelMetric metric, const QStyleOption *opti
res = int(QStyleHelper::dpiScaled(4., option)); res = int(QStyleHelper::dpiScaled(4., option));
break; break;
#if QT_CONFIG(toolbutton)
case PM_ButtonShiftHorizontal: case PM_ButtonShiftHorizontal:
case PM_ButtonShiftVertical: case PM_ButtonShiftVertical:
res = qstyleoption_cast<const QStyleOptionToolButton *>(option) ? 1 : 0; res = qstyleoption_cast<const QStyleOptionToolButton *>(option) ? 1 : 0;
break; break;
#endif // QT_CONFIG(toolbutton)
default: default:
res = QWindowsStyle::pixelMetric(metric, option, widget); res = QWindowsStyle::pixelMetric(metric, option, widget);
@ -4586,8 +4603,12 @@ void QWindowsVistaStyle::polish(QWidget *widget)
#if QT_CONFIG(abstractbutton) #if QT_CONFIG(abstractbutton)
|| qobject_cast<QAbstractButton*>(widget) || qobject_cast<QAbstractButton*>(widget)
#endif // QT_CONFIG(abstractbutton) #endif // QT_CONFIG(abstractbutton)
#if QT_CONFIG(toolbutton)
|| qobject_cast<QToolButton*>(widget) || qobject_cast<QToolButton*>(widget)
#endif // QT_CONFIG(toolbutton)
#if QT_CONFIG(tabbar)
|| qobject_cast<QTabBar*>(widget) || qobject_cast<QTabBar*>(widget)
#endif // QT_CONFIG(tabbar)
#if QT_CONFIG(combobox) #if QT_CONFIG(combobox)
|| qobject_cast<QComboBox*>(widget) || qobject_cast<QComboBox*>(widget)
#endif // QT_CONFIG(combobox) #endif // QT_CONFIG(combobox)
@ -4695,8 +4716,12 @@ void QWindowsVistaStyle::unpolish(QWidget *widget)
#if QT_CONFIG(abstractbutton) #if QT_CONFIG(abstractbutton)
|| qobject_cast<QAbstractButton*>(widget) || qobject_cast<QAbstractButton*>(widget)
#endif #endif
#if QT_CONFIG(toolbutton)
|| qobject_cast<QToolButton*>(widget) || qobject_cast<QToolButton*>(widget)
#endif // QT_CONFIG(toolbutton)
#if QT_CONFIG(tabbar)
|| qobject_cast<QTabBar*>(widget) || qobject_cast<QTabBar*>(widget)
#endif // QT_CONFIG(tabbar)
#if QT_CONFIG(combobox) #if QT_CONFIG(combobox)
|| qobject_cast<QComboBox*>(widget) || qobject_cast<QComboBox*>(widget)
#endif // QT_CONFIG(combobox) #endif // QT_CONFIG(combobox)

View File

@ -2285,6 +2285,7 @@ QStyleOptionDockWidget::QStyleOptionDockWidget(int version)
The default value is true. The default value is true.
*/ */
#if QT_CONFIG(toolbutton)
/*! /*!
\class QStyleOptionToolButton \class QStyleOptionToolButton
\brief The QStyleOptionToolButton class is used to describe the \brief The QStyleOptionToolButton class is used to describe the
@ -2445,6 +2446,7 @@ QStyleOptionToolButton::QStyleOptionToolButton(int version)
Qt::ToolButtonTextOnly. By default, the application's default font Qt::ToolButtonTextOnly. By default, the application's default font
is used. is used.
*/ */
#endif // QT_CONFIG(toolbutton)
/*! /*!
\class QStyleOptionComboBox \class QStyleOptionComboBox

View File

@ -542,6 +542,7 @@ protected:
}; };
#endif // QT_CONFIG(spinbox) #endif // QT_CONFIG(spinbox)
#if QT_CONFIG(toolbutton)
class Q_WIDGETS_EXPORT QStyleOptionToolButton : public QStyleOptionComplex class Q_WIDGETS_EXPORT QStyleOptionToolButton : public QStyleOptionComplex
{ {
public: public:
@ -570,6 +571,7 @@ protected:
}; };
Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolButton::ToolButtonFeatures) Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolButton::ToolButtonFeatures)
#endif // QT_CONFIG(toolbutton)
class Q_WIDGETS_EXPORT QStyleOptionComboBox : public QStyleOptionComplex class Q_WIDGETS_EXPORT QStyleOptionComboBox : public QStyleOptionComplex
{ {

View File

@ -3290,6 +3290,7 @@ void QStyleSheetStyle::drawComplexControl(ComplexControl cc, const QStyleOptionC
break; break;
case CC_ToolButton: case CC_ToolButton:
#if QT_CONFIG(toolbutton)
if (const QStyleOptionToolButton *tool = qstyleoption_cast<const QStyleOptionToolButton *>(opt)) { if (const QStyleOptionToolButton *tool = qstyleoption_cast<const QStyleOptionToolButton *>(opt)) {
QStyleOptionToolButton toolOpt(*tool); QStyleOptionToolButton toolOpt(*tool);
rule.configurePalette(&toolOpt.palette, QPalette::ButtonText, QPalette::Button); rule.configurePalette(&toolOpt.palette, QPalette::ButtonText, QPalette::Button);
@ -3440,6 +3441,7 @@ void QStyleSheetStyle::drawComplexControl(ComplexControl cc, const QStyleOptionC
} }
return; return;
} }
#endif // QT_CONFIG(toolbutton)
break; break;
#if QT_CONFIG(scrollbar) #if QT_CONFIG(scrollbar)
@ -3671,6 +3673,7 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q
switch (ce) { switch (ce) {
case CE_ToolButtonLabel: case CE_ToolButtonLabel:
#if QT_CONFIG(toolbutton)
if (const QStyleOptionToolButton *btn = qstyleoption_cast<const QStyleOptionToolButton *>(opt)) { if (const QStyleOptionToolButton *btn = qstyleoption_cast<const QStyleOptionToolButton *>(opt)) {
if (rule.hasBox() || btn->features & QStyleOptionToolButton::Arrow) { if (rule.hasBox() || btn->features & QStyleOptionToolButton::Arrow) {
QWindowsStyle::drawControl(ce, opt, p, w); QWindowsStyle::drawControl(ce, opt, p, w);
@ -3681,6 +3684,7 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q
} }
return; return;
} }
#endif // QT_CONFIG(toolbutton)
break; break;
case CE_FocusFrame: case CE_FocusFrame:
@ -5979,6 +5983,7 @@ QRect QStyleSheetStyle::subControlRect(ComplexControl cc, const QStyleOptionComp
break; break;
case CC_ToolButton: case CC_ToolButton:
#if QT_CONFIG(toolbutton)
if (const QStyleOptionToolButton *tb = qstyleoption_cast<const QStyleOptionToolButton *>(opt)) { if (const QStyleOptionToolButton *tb = qstyleoption_cast<const QStyleOptionToolButton *>(opt)) {
if (rule.hasBox() || !rule.hasNativeBorder()) { if (rule.hasBox() || !rule.hasNativeBorder()) {
switch (sc) { switch (sc) {
@ -5996,8 +6001,9 @@ QRect QStyleSheetStyle::subControlRect(ComplexControl cc, const QStyleOptionComp
tool.rect = rule.borderRect(opt->rect); tool.rect = rule.borderRect(opt->rect);
return rule.baseStyleCanDraw() ? baseStyle()->subControlRect(cc, &tool, sc, w) return rule.baseStyleCanDraw() ? baseStyle()->subControlRect(cc, &tool, sc, w)
: QWindowsStyle::subControlRect(cc, &tool, sc, w); : QWindowsStyle::subControlRect(cc, &tool, sc, w);
} }
break; #endif // QT_CONFIG(toolbutton)
break;
#if QT_CONFIG(scrollbar) #if QT_CONFIG(scrollbar)
case CC_ScrollBar: case CC_ScrollBar:

View File

@ -2260,8 +2260,10 @@ QSize QWindowsStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt,
break; break;
#endif #endif
case CT_ToolButton: case CT_ToolButton:
#if QT_CONFIG(toolbutton)
if (qstyleoption_cast<const QStyleOptionToolButton *>(opt)) if (qstyleoption_cast<const QStyleOptionToolButton *>(opt))
return sz += QSize(7, 6); return sz += QSize(7, 6);
#endif // QT_CONFIG(toolbutton)
Q_FALLTHROUGH(); Q_FALLTHROUGH();
default: default: