Blob Blame History Raw
From 733d1afd03908d695aa8a6518f453b9ff0e5b8a2 Mon Sep 17 00:00:00 2001
From: Robert Knight <>
Date: Sun, 20 Apr 2008 16:28:31 +0200
Subject: [PATCH 05/13] When tabs are inserted or removed in a QTabBar,
 QTabBarPrivate::refresh() is called to update the layout.  If the
 tabbar widget is hidden, this just sets a boolean variable
 (layoutDirty) and returns, so the parent widget's layout is not
 notified about the possible geometry change.

Prior to Qt 4.4 this was not a problem because the geometry was
recalculated in QTabBar::sizeHint() if the layoutDirty variable was
set.  In Qt 4.4 however the layout caches size hint information in
QWidgetItemV2.  Since the cache information is not invalidated, the
layout may end up using out-of-date size hint information to compute
the widget size.

If the QTabBar is empty when QTabBar::sizeHint() is called, it will
return a size with a height of 0, which will be kept in the cache and
so the tab bar will never be shown.

This patch fixes the problem by calling updateGeometry() whenever the
tab bar's layout is refreshed.

qt-bugs@ issue : 208185
Trolltech task ID : 208349 number : 159014
 src/gui/widgets/qtabbar.cpp |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/src/gui/widgets/qtabbar.cpp b/src/gui/widgets/qtabbar.cpp
index 419d456..41107a0 100644
--- a/src/gui/widgets/qtabbar.cpp
+++ b/src/gui/widgets/qtabbar.cpp
@@ -678,8 +678,8 @@ void QTabBarPrivate::refresh()
-        q->updateGeometry();
+    q->updateGeometry();