Merge QStyleOptionTabV4 into QStyleOptionTab

We don't need the subclass any more now that we can break ABI.
Merge it back into the "main" style option class, like already
happened during Qt 4->5.

Change-Id: Iba6d3df5f87b0c96f01746260f0a93951dad0e27
Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
bb10
Giuseppe D'Angelo 2020-05-06 17:01:06 +02:00
parent 6e63d65e5a
commit 729f1ab9a0
4 changed files with 22 additions and 30 deletions

View File

@ -1266,6 +1266,14 @@ QStyleOptionToolBar::QStyleOptionToolBar(int version)
Synonym for QStyleOptionTab.
*/
/*!
\typedef QStyleOptionTabV4
\relates QStyleOptionTab
\obsolete
Synonym for QStyleOptionTab.
*/
/*!
Constructs a QStyleOptionTab object, initializing the members
variables to their default values.
@ -1471,16 +1479,7 @@ QStyleOptionTab::QStyleOptionTab(int version)
*/
/*!
Constructs a QStyleOptionTabV4 object, initializing the members
variables to their default values.
*/
QStyleOptionTabV4::QStyleOptionTabV4() : QStyleOptionTab(QStyleOptionTabV4::Version)
{
}
/*!
\variable QStyleOptionTabV4::tabIndex
\variable QStyleOptionTab::tabIndex
\brief the index for the tab being represented.
The default value is -1, i.e. a tab not on a tabbar;

View File

@ -265,7 +265,7 @@ class Q_WIDGETS_EXPORT QStyleOptionTab : public QStyleOption
{
public:
enum StyleOptionType { Type = SO_Tab };
enum StyleOptionVersion { Version = 3 };
enum StyleOptionVersion { Version = 4 };
enum TabPosition { Beginning, Middle, End, OnlyOneTab };
enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected };
@ -287,6 +287,7 @@ public:
QSize leftButtonSize;
QSize rightButtonSize;
TabFeatures features;
int tabIndex = -1;
QStyleOptionTab();
QStyleOptionTab(const QStyleOptionTab &other) : QStyleOption(Version, Type) { *this = other; }
@ -296,18 +297,11 @@ protected:
QStyleOptionTab(int version);
};
class Q_WIDGETS_EXPORT QStyleOptionTabV4 : public QStyleOptionTab
{
public:
enum StyleOptionVersion { Version = 4 };
QStyleOptionTabV4();
int tabIndex = -1;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionTab::CornerWidgets)
typedef Q_DECL_DEPRECATED QStyleOptionTab QStyleOptionTabV2;
typedef Q_DECL_DEPRECATED QStyleOptionTab QStyleOptionTabV3;
typedef Q_DECL_DEPRECATED QStyleOptionTab QStyleOptionTabV4;
#endif // QT_CONFIG(tabbar)

View File

@ -6015,11 +6015,11 @@ QRect QStyleSheetStyle::subElementRect(SubElement se, const QStyleOption *opt, c
QRenderRule subRule = renderRule(w, opt, PseudoElement_TabBarTab);
if (subRule.hasBox() || !subRule.hasNativeBorder()) {
if (se == SE_TabBarTabText) {
if (const QStyleOptionTabV4 *tab = qstyleoption_cast<const QStyleOptionTabV4 *>(opt)) {
if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(opt)) {
const QTabBar *bar = qobject_cast<const QTabBar *>(w);
const QRect optRect = bar && tab->tabIndex != -1 ? bar->tabRect(tab->tabIndex) : opt->rect;
const QRect r = positionRect(w, subRule, PseudoElement_TabBarTab, optRect, opt->direction);
QStyleOptionTabV4 tabCopy(*tab);
QStyleOptionTab tabCopy(*tab);
tabCopy.rect = subRule.contentsRect(r);
return ParentStyle::subElementRect(se, &tabCopy, w);
}

View File

@ -231,8 +231,7 @@ void QTabBarPrivate::initBasicStyleOption(QStyleOptionTab *option, int tabIndex)
option->cornerWidgets |= QStyleOptionTab::RightCornerWidget;
}
#endif
if (QStyleOptionTabV4 *optv4 = qstyleoption_cast<QStyleOptionTabV4 *>(option))
optv4->tabIndex = tabIndex;
option->tabIndex = tabIndex;
}
/*!
@ -632,7 +631,7 @@ QRect QTabBarPrivate::normalizedScrollRect(int index)
// tab bar itself is in a different orientation.
Q_Q(QTabBar);
QStyleOptionTabV4 opt;
QStyleOptionTab opt;
q->initStyleOption(&opt, currentIndex);
opt.rect = q->rect();
@ -761,7 +760,7 @@ void QTabBarPrivate::layoutTab(int index)
if (!(tab.leftWidget || tab.rightWidget))
return;
QStyleOptionTabV4 opt;
QStyleOptionTab opt;
q->initStyleOption(&opt, index);
if (tab.leftWidget) {
QRect rect = q->style()->subElementRect(QStyle::SE_TabBarTabLeftButton, &opt, q);
@ -1007,7 +1006,7 @@ int QTabBar::insertTab(int index, const QIcon& icon, const QString &text)
}
if (d->closeButtonOnTabs) {
QStyleOptionTabV4 opt;
QStyleOptionTab opt;
initStyleOption(&opt, index);
ButtonPosition closeSide = (ButtonPosition)style()->styleHint(QStyle::SH_TabBar_CloseButtonPosition, nullptr, this);
QAbstractButton *closeButton = new CloseButton(this);
@ -1577,7 +1576,7 @@ QSize QTabBar::tabSizeHint(int index) const
//Note: this must match with the computations in QCommonStylePrivate::tabLayout
Q_D(const QTabBar);
if (const QTabBarPrivate::Tab *tab = d->at(index)) {
QStyleOptionTabV4 opt;
QStyleOptionTab opt;
d->initBasicStyleOption(&opt, index);
opt.text = d->tabList.at(index).text;
QSize iconSize = tab->icon.isNull() ? QSize(0, 0) : opt.iconSize;
@ -1832,7 +1831,7 @@ void QTabBar::paintEvent(QPaintEvent *)
for (int i = 0; i < d->tabList.count(); ++i) {
if (!d->at(i)->visible)
continue;
QStyleOptionTabV4 tab;
QStyleOptionTab tab;
initStyleOption(&tab, i);
if (d->paintWithOffsets && d->tabList[i].dragOffset != 0) {
if (vertical) {
@ -1872,7 +1871,7 @@ void QTabBar::paintEvent(QPaintEvent *)
// Draw the selected tab last to get it "on top"
if (selected >= 0) {
QStyleOptionTabV4 tab;
QStyleOptionTab tab;
initStyleOption(&tab, selected);
if (d->paintWithOffsets && d->tabList[selected].dragOffset != 0) {
if (vertical)
@ -2222,7 +2221,7 @@ void QTabBarPrivate::setupMovableTab()
grabImage.fill(Qt::transparent);
QStylePainter p(&grabImage, q);
QStyleOptionTabV4 tab;
QStyleOptionTab tab;
q->initStyleOption(&tab, pressedIndex);
tab.position = QStyleOptionTab::OnlyOneTab;
if (verticalTabs(shape))