Add HasFrame feature to QStyleOptionTab
authorJens Bache-Wiig <jens.bache-wiig@digia.com>
Tue, 16 Oct 2012 07:02:08 +0000 (09:02 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Tue, 16 Oct 2012 13:29:15 +0000 (15:29 +0200)
This makes it possible for styles like Fusion to draw tabbars different
when they have a frame.

Change-Id: I1bb21198c0c3caf44c757f6f39310bf2509054bf
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
src/widgets/styles/qstyleoption.cpp
src/widgets/styles/qstyleoption.h
src/widgets/widgets/qtabbar.cpp

index bc363d3..3017f30 100644 (file)
@@ -1271,7 +1271,8 @@ QStyleOptionTab::QStyleOptionTab()
       row(0),
       position(Beginning),
       selectedPosition(NotAdjacent), cornerWidgets(QStyleOptionTab::NoCornerWidgets),
-      documentMode(false)
+      documentMode(false),
+      features(QStyleOptionTab::None)
 {
 }
 
@@ -1284,7 +1285,8 @@ QStyleOptionTab::QStyleOptionTab(int version)
       row(0),
       position(Beginning),
       selectedPosition(NotAdjacent), cornerWidgets(QStyleOptionTab::NoCornerWidgets),
-      documentMode(false)
+      documentMode(false),
+      features(QStyleOptionTab::None)
 {
 }
 
@@ -1438,6 +1440,17 @@ QStyleOptionTab::QStyleOptionTab(int version)
 */
 
 /*!
+    \enum QStyleOptionTab::TabFeature
+
+    Describes the various features that a tab button can have.
+
+    \value None A normal tab button.
+    \value HasFrame The tab button is positioned on a tab frame
+
+    \sa features
+*/
+
+/*!
     \variable QStyleOptionTab::leftButtonSize
     \brief the size for the left widget on the tab.
 
index 1f35ecb..7ca0ca2 100644 (file)
@@ -255,7 +255,9 @@ public:
     enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected };
     enum CornerWidget { NoCornerWidgets = 0x00, LeftCornerWidget = 0x01,
                         RightCornerWidget = 0x02 };
+    enum TabFeature { None = 0x00, HasFrame = 0x01 };
     Q_DECLARE_FLAGS(CornerWidgets, CornerWidget)
+    Q_DECLARE_FLAGS(TabFeatures, TabFeature)
 
     QTabBar::Shape shape;
     QString text;
@@ -268,6 +270,7 @@ public:
     bool documentMode;
     QSize leftButtonSize;
     QSize rightButtonSize;
+    TabFeatures features;
 
     QStyleOptionTab();
     QStyleOptionTab(const QStyleOptionTab &other) : QStyleOption(Version, Type) { *this = other; }
index 903f496..f9325e6 100644 (file)
@@ -185,6 +185,7 @@ void QTabBar::initStyleOption(QStyleOptionTab *option, int tabIndex) const
 
 #ifndef QT_NO_TABWIDGET
     if (const QTabWidget *tw = qobject_cast<const QTabWidget *>(parentWidget())) {
+        option->features |= QStyleOptionTab::HasFrame;
         if (tw->cornerWidget(Qt::TopLeftCorner) || tw->cornerWidget(Qt::BottomLeftCorner))
             option->cornerWidgets |= QStyleOptionTab::LeftCornerWidget;
         if (tw->cornerWidget(Qt::TopRightCorner) || tw->cornerWidget(Qt::BottomRightCorner))