src/gui/widgets/qtabwidget.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
--- a/src/gui/widgets/qtabwidget.cpp	Tue Jan 26 12:42:25 2010 +0200
+++ b/src/gui/widgets/qtabwidget.cpp	Tue Feb 02 00:43:10 2010 +0200
@@ -313,7 +313,16 @@
                                                         : QTabBar::TriangularEast;
         break;
     }
+
     option->tabBarSize = t;
+
+    if (QStyleOptionTabWidgetFrameV2 *tabframe = qstyleoption_cast<QStyleOptionTabWidgetFrameV2*>(option)) {
+        QRect tbRect = tabBar()->geometry();
+        QRect selectedTabRect = tabBar()->tabRect(tabBar()->currentIndex());
+        tabframe->tabBarRect = tbRect;
+        selectedTabRect.moveTopLeft(selectedTabRect.topLeft() + tbRect.topLeft());
+        tabframe->selectedTabRect = selectedTabRect;
+    }
 }
 
 /*!
@@ -690,8 +699,8 @@
     setFocusProxy(d->tabs);
     connect(d->tabs, SIGNAL(currentChanged(int)),
             this, SLOT(_q_showTab(int)));
-    connect(d->tabs, SIGNAL(tabMoved(int, int)),
-            this, SLOT(_q_tabMoved(int, int)));
+    connect(d->tabs, SIGNAL(tabMoved(int,int)),
+            this, SLOT(_q_tabMoved(int,int)));
     if (d->tabs->tabsClosable())
         connect(d->tabs, SIGNAL(tabCloseRequested(int)),
                 this, SIGNAL(tabCloseRequested(int)));
@@ -756,7 +765,7 @@
     if (onlyCheck && !d->dirty)
         return; // nothing to do
 
-    QStyleOptionTabWidgetFrame option;
+    QStyleOptionTabWidgetFrameV2 option;
     initStyleOption(&option);
 
     // this must be done immediately, because QWidgetItem relies on it (even if !isVisible())
@@ -1167,8 +1176,8 @@
 void QTabWidget::paintEvent(QPaintEvent *)
 {
     Q_D(QTabWidget);
-    QStylePainter p(this);
     if (documentMode()) {
+        QStylePainter p(this, tabBar());
         if (QWidget *w = cornerWidget(Qt::TopLeftCorner)) {
             QStyleOptionTabBarBaseV2 opt;
             QTabBarPrivate::initStyleBaseOption(&opt, tabBar(), w->size());
@@ -1185,8 +1194,9 @@
         }
         return;
     }
+    QStylePainter p(this);
 
-    QStyleOptionTabWidgetFrame opt;
+    QStyleOptionTabWidgetFrameV2 opt;
     initStyleOption(&opt);
     opt.rect = d->panelRect;
     p.drawPrimitive(QStyle::PE_FrameTabWidget, opt);