From 4630c92ceaa46eefb87c9062ab4ca9d96a9cb0ba Mon Sep 17 00:00:00 2001 From: Christian Ehrlicher Date: Wed, 30 Apr 2025 10:22:12 +0200 Subject: [PATCH] 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 (cherry picked from commit 0d4e04416554d9b2f03f325616052be06dd85a44) Reviewed-by: Qt Cherry-pick Bot --- .../styles/modernwindows/qwindows11style.cpp | 6 +++++ .../modernwindows/qwindowsvistastyle.cpp | 27 ++++++++++++++++++- src/widgets/styles/qstyleoption.cpp | 2 ++ src/widgets/styles/qstyleoption.h | 2 ++ src/widgets/styles/qstylesheetstyle.cpp | 10 +++++-- src/widgets/styles/qwindowsstyle.cpp | 2 ++ 6 files changed, 46 insertions(+), 3 deletions(-) diff --git a/src/plugins/styles/modernwindows/qwindows11style.cpp b/src/plugins/styles/modernwindows/qwindows11style.cpp index f84a2e06fdb..f4f559779f4 100644 --- a/src/plugins/styles/modernwindows/qwindows11style.cpp +++ b/src/plugins/styles/modernwindows/qwindows11style.cpp @@ -759,6 +759,7 @@ void QWindows11Style::drawPrimitive(PrimitiveElement element, const QStyleOption break; } case PE_FrameTabWidget: +#if QT_CONFIG(tabwidget) if (const QStyleOptionTabWidgetFrame *frame = qstyleoption_cast(option)) { QRectF frameRect = frame->rect.marginsRemoved(QMargins(0,0,0,0)); painter->setPen(Qt::NoPen); @@ -769,6 +770,7 @@ void QWindows11Style::drawPrimitive(PrimitiveElement element, const QStyleOption painter->setBrush(Qt::NoBrush); painter->drawRoundedRect(frameRect.marginsRemoved(QMarginsF(0.5,0.5,0.5,0.5)), secondLevelRoundingRadius, secondLevelRoundingRadius); } +#endif // QT_CONFIG(tabwidget) break; case PE_FrameGroupBox: if (const QStyleOptionFrame *frame = qstyleoption_cast(option)) { @@ -1158,6 +1160,7 @@ void QWindows11Style::drawControl(ControlElement element, const QStyleOption *op } break; case QStyle::CE_TabBarTabShape: +#if QT_CONFIG(tabbar) if (const QStyleOptionTab *tab = qstyleoption_cast(option)) { QRectF tabRect = tab->rect.marginsRemoved(QMargins(2,2,0,0)); 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); } +#endif // QT_CONFIG(tabbar) break; case CE_ToolButtonLabel: +#if QT_CONFIG(toolbutton) if (const QStyleOptionToolButton *toolbutton = qstyleoption_cast(option)) { QRect rect = toolbutton->rect; @@ -1261,6 +1266,7 @@ void QWindows11Style::drawControl(ControlElement element, const QStyleOption *op } } } +#endif // QT_CONFIG(toolbutton) break; case QStyle::CE_ShapedFrame: if (const QStyleOptionFrame *f = qstyleoption_cast(option)) { diff --git a/src/plugins/styles/modernwindows/qwindowsvistastyle.cpp b/src/plugins/styles/modernwindows/qwindowsvistastyle.cpp index 7923225aad2..2ba3b196565 100644 --- a/src/plugins/styles/modernwindows/qwindowsvistastyle.cpp +++ b/src/plugins/styles/modernwindows/qwindowsvistastyle.cpp @@ -1732,6 +1732,7 @@ void QWindowsVistaStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt #endif // QT_CONFIG(dockwidget) case PE_FrameTabWidget: +#if QT_CONFIG(tabwidget) if (const auto *tab = qstyleoption_cast(option)) { themeNumber = QWindowsVistaStylePrivate::TabTheme; partId = TABP_PANE; @@ -1789,7 +1790,7 @@ void QWindowsVistaStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt } } break; - +#endif // QT_CONFIG(tabwidget) case PE_FrameStatusBarItem: themeNumber = QWindowsVistaStylePrivate::StatusTheme; partId = SP_PANE; @@ -2001,6 +2002,7 @@ void QWindowsVistaStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt } case PE_FrameTabBarBase: +#if QT_CONFIG(tabbar) if (const auto *tbb = qstyleoption_cast(option)) { painter->save(); switch (tbb->shape) { @@ -2031,6 +2033,7 @@ void QWindowsVistaStyle::drawPrimitive(PrimitiveElement element, const QStyleOpt } painter->restore(); } +#endif // QT_CONFIG(tabbar) return; case PE_Widget: { @@ -2533,11 +2536,14 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption return; case CE_TabBarTab: +#if QT_CONFIG(tabwidget) if (const auto *tab = qstyleoption_cast(option)) stateId = tab->state & State_Enabled ? TIS_NORMAL : TIS_DISABLED; +#endif // QT_CONFIG(tabwidget) break; case CE_TabBarTabShape: +#if QT_CONFIG(tabwidget) if (const auto *tab = qstyleoption_cast(option)) { themeNumber = QWindowsVistaStylePrivate::TabTheme; const bool isDisabled = !(tab->state & State_Enabled); @@ -2639,6 +2645,7 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption } } } +#endif // QT_CONFIG(tabwidget) break; case CE_ProgressBarGroove: { @@ -3015,6 +3022,7 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption } case CE_ToolBar: +#if QT_CONFIG(toolbar) if (const auto *toolbar = qstyleoption_cast(option)) { QPalette pal = option->palette; pal.setColor(QPalette::Dark, option->palette.window().color().darker(130)); @@ -3022,6 +3030,7 @@ void QWindowsVistaStyle::drawControl(ControlElement element, const QStyleOption copyOpt.palette = pal; QWindowsStyle::drawControl(element, ©Opt, painter, widget); } +#endif // QT_CONFIG(toolbar) return; #if QT_CONFIG(dockwidget) @@ -4159,6 +4168,7 @@ QRect QWindowsVistaStyle::subElementRect(SubElement element, const QStyleOption case SE_TabWidgetTabContents: rect = QWindowsStyle::subElementRect(element, option, widget); +#if QT_CONFIG(tabwidget) if (qstyleoption_cast(option)) { rect = QWindowsStyle::subElementRect(element, option, widget); if (const QTabWidget *tabWidget = qobject_cast(widget)) { @@ -4167,10 +4177,12 @@ QRect QWindowsVistaStyle::subElementRect(SubElement element, const QStyleOption rect.adjust(0, 0, -2, -2); } } +#endif // QT_CONFIG(tabwidget) break; case SE_TabWidgetTabBar: { rect = QWindowsStyle::subElementRect(element, option, widget); +#if QT_CONFIG(tabwidget) const auto *twfOption = qstyleoption_cast(option); if (twfOption && twfOption->direction == Qt::RightToLeft && (twfOption->shape == QTabBar::RoundedNorth @@ -4183,6 +4195,7 @@ QRect QWindowsVistaStyle::subElementRect(SubElement element, const QStyleOption int borderThickness = proxy()->pixelMetric(PM_DefaultFrameWidth, option, widget); rect.adjust(-overlap + borderThickness, 0, -overlap + borderThickness, 0); } +#endif // QT_CONFIG(tabwidget) break; } @@ -4521,6 +4534,7 @@ int QWindowsVistaStyle::pixelMetric(PixelMetric metric, const QStyleOption *opti res = 2; break; +#if QT_CONFIG(tabbar) case PM_TabBarBaseOverlap: if (const auto *tab = qstyleoption_cast(option)) { switch (tab->shape) { @@ -4541,6 +4555,7 @@ int QWindowsVistaStyle::pixelMetric(PixelMetric metric, const QStyleOption *opti } } break; +#endif // QT_CONFIG(tabbar) case PM_SplitterWidth: res = QStyleHelper::dpiScaled(5., option); @@ -4561,10 +4576,12 @@ int QWindowsVistaStyle::pixelMetric(PixelMetric metric, const QStyleOption *opti res = int(QStyleHelper::dpiScaled(4., option)); break; +#if QT_CONFIG(toolbutton) case PM_ButtonShiftHorizontal: case PM_ButtonShiftVertical: res = qstyleoption_cast(option) ? 1 : 0; break; +#endif // QT_CONFIG(toolbutton) default: res = QWindowsStyle::pixelMetric(metric, option, widget); @@ -4586,8 +4603,12 @@ void QWindowsVistaStyle::polish(QWidget *widget) #if QT_CONFIG(abstractbutton) || qobject_cast(widget) #endif // QT_CONFIG(abstractbutton) +#if QT_CONFIG(toolbutton) || qobject_cast(widget) +#endif // QT_CONFIG(toolbutton) +#if QT_CONFIG(tabbar) || qobject_cast(widget) +#endif // QT_CONFIG(tabbar) #if QT_CONFIG(combobox) || qobject_cast(widget) #endif // QT_CONFIG(combobox) @@ -4695,8 +4716,12 @@ void QWindowsVistaStyle::unpolish(QWidget *widget) #if QT_CONFIG(abstractbutton) || qobject_cast(widget) #endif + #if QT_CONFIG(toolbutton) || qobject_cast(widget) + #endif // QT_CONFIG(toolbutton) + #if QT_CONFIG(tabbar) || qobject_cast(widget) + #endif // QT_CONFIG(tabbar) #if QT_CONFIG(combobox) || qobject_cast(widget) #endif // QT_CONFIG(combobox) diff --git a/src/widgets/styles/qstyleoption.cpp b/src/widgets/styles/qstyleoption.cpp index f1fc18003c1..af14d1ff98b 100644 --- a/src/widgets/styles/qstyleoption.cpp +++ b/src/widgets/styles/qstyleoption.cpp @@ -2285,6 +2285,7 @@ QStyleOptionDockWidget::QStyleOptionDockWidget(int version) The default value is true. */ +#if QT_CONFIG(toolbutton) /*! \class QStyleOptionToolButton \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 is used. */ +#endif // QT_CONFIG(toolbutton) /*! \class QStyleOptionComboBox diff --git a/src/widgets/styles/qstyleoption.h b/src/widgets/styles/qstyleoption.h index 49b37132de3..715a1794634 100644 --- a/src/widgets/styles/qstyleoption.h +++ b/src/widgets/styles/qstyleoption.h @@ -542,6 +542,7 @@ protected: }; #endif // QT_CONFIG(spinbox) +#if QT_CONFIG(toolbutton) class Q_WIDGETS_EXPORT QStyleOptionToolButton : public QStyleOptionComplex { public: @@ -570,6 +571,7 @@ protected: }; Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolButton::ToolButtonFeatures) +#endif // QT_CONFIG(toolbutton) class Q_WIDGETS_EXPORT QStyleOptionComboBox : public QStyleOptionComplex { diff --git a/src/widgets/styles/qstylesheetstyle.cpp b/src/widgets/styles/qstylesheetstyle.cpp index f8417f0fe03..5253a011c8f 100644 --- a/src/widgets/styles/qstylesheetstyle.cpp +++ b/src/widgets/styles/qstylesheetstyle.cpp @@ -3290,6 +3290,7 @@ void QStyleSheetStyle::drawComplexControl(ComplexControl cc, const QStyleOptionC break; case CC_ToolButton: +#if QT_CONFIG(toolbutton) if (const QStyleOptionToolButton *tool = qstyleoption_cast(opt)) { QStyleOptionToolButton toolOpt(*tool); rule.configurePalette(&toolOpt.palette, QPalette::ButtonText, QPalette::Button); @@ -3440,6 +3441,7 @@ void QStyleSheetStyle::drawComplexControl(ComplexControl cc, const QStyleOptionC } return; } +#endif // QT_CONFIG(toolbutton) break; #if QT_CONFIG(scrollbar) @@ -3671,6 +3673,7 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q switch (ce) { case CE_ToolButtonLabel: +#if QT_CONFIG(toolbutton) if (const QStyleOptionToolButton *btn = qstyleoption_cast(opt)) { if (rule.hasBox() || btn->features & QStyleOptionToolButton::Arrow) { QWindowsStyle::drawControl(ce, opt, p, w); @@ -3681,6 +3684,7 @@ void QStyleSheetStyle::drawControl(ControlElement ce, const QStyleOption *opt, Q } return; } +#endif // QT_CONFIG(toolbutton) break; case CE_FocusFrame: @@ -5979,6 +5983,7 @@ QRect QStyleSheetStyle::subControlRect(ComplexControl cc, const QStyleOptionComp break; case CC_ToolButton: +#if QT_CONFIG(toolbutton) if (const QStyleOptionToolButton *tb = qstyleoption_cast(opt)) { if (rule.hasBox() || !rule.hasNativeBorder()) { switch (sc) { @@ -5996,8 +6001,9 @@ QRect QStyleSheetStyle::subControlRect(ComplexControl cc, const QStyleOptionComp tool.rect = rule.borderRect(opt->rect); return rule.baseStyleCanDraw() ? baseStyle()->subControlRect(cc, &tool, sc, w) : QWindowsStyle::subControlRect(cc, &tool, sc, w); - } - break; + } +#endif // QT_CONFIG(toolbutton) + break; #if QT_CONFIG(scrollbar) case CC_ScrollBar: diff --git a/src/widgets/styles/qwindowsstyle.cpp b/src/widgets/styles/qwindowsstyle.cpp index 3036f61d17e..a5ffa93e167 100644 --- a/src/widgets/styles/qwindowsstyle.cpp +++ b/src/widgets/styles/qwindowsstyle.cpp @@ -2260,8 +2260,10 @@ QSize QWindowsStyle::sizeFromContents(ContentsType ct, const QStyleOption *opt, break; #endif case CT_ToolButton: +#if QT_CONFIG(toolbutton) if (qstyleoption_cast(opt)) return sz += QSize(7, 6); +#endif // QT_CONFIG(toolbutton) Q_FALLTHROUGH(); default: