diff --git a/private/nativetabbar.cpp b/private/nativetabbar.cpp index 865c825d9..a28eaea87 100644 --- a/private/nativetabbar.cpp +++ b/private/nativetabbar.cpp @@ -118,7 +118,7 @@ NativeTabBar::NativeTabBar(QWidget *parent) d->lastIndex[0] = -1; connect(this, SIGNAL(currentChanged(int)), this, SLOT(startAnimation())); - setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); + setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); } NativeTabBar::~NativeTabBar() @@ -130,6 +130,12 @@ QRect NativeTabBar::tabRect(int index) const { QRect rect = KTabBar::tabRect(index).translated(d->left, d->top); + if (isVertical()) { + rect.setWidth(width()-d->top-d->bottom); + } else { + rect.setHeight(height()-d->top-d->bottom); + } + return rect; } @@ -183,26 +189,10 @@ QSize NativeTabBar::tabSizeHint(int index) const return hint; } -//FIXME: this shouldn't be necessary but it seems to return wring numbers the base implementation? + QSize NativeTabBar::sizeHint() const { - int width = 0; - int height = 0; - - if (isVertical()) { - for (int i = count() - 1; i >= 0; i--) { - height += tabRect(i).height(); - } - - width = tabRect(0).width(); - } else { - for (int i = count() - 1; i >= 0; i--) { - width += tabRect(i).width(); - } - - height = tabRect(0).height(); - } - return QSize(width + d->left + d->right, height + d->top + d->bottom); + return KTabBar::sizeHint(); } void NativeTabBar::paintEvent(QPaintEvent *event) diff --git a/widgets/tabbar.cpp b/widgets/tabbar.cpp index 7bbc2c981..8af7e068d 100644 --- a/widgets/tabbar.cpp +++ b/widgets/tabbar.cpp @@ -167,7 +167,7 @@ void TabBarPrivate::shapeChanged(const QTabBar::Shape shape) default: tabBarLayout->setOrientation(Qt::Horizontal); tabWidgetLayout->setOrientation(Qt::Vertical); - tabWidgetLayout->itemAt(0)->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); + tabWidgetLayout->itemAt(0)->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); tabWidgetLayout->itemAt(1)->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); tabProxy->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); } @@ -271,7 +271,7 @@ int TabBar::currentIndex() const void TabBar::resizeEvent(QGraphicsSceneResizeEvent * event) { if (!d->isTabWidget) { - d->tabProxy->native->setMinimumSize(event->newSize().toSize()); + d->tabProxy->setMinimumSize(event->newSize().toSize()); } else { d->tabProxy->native->setMinimumSize(QSize(0,0)); }