48 lines
1.6 KiB
Diff
48 lines
1.6 KiB
Diff
|
From 733d1afd03908d695aa8a6518f453b9ff0e5b8a2 Mon Sep 17 00:00:00 2001
|
||
|
From: Robert Knight <robertknight@gmail.com>
|
||
|
Date: Sun, 20 Apr 2008 16:28:31 +0200
|
||
|
Subject: [PATCH 05/18] 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
|
||
|
bugs.kde.org 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()
|
||
|
layoutTabs();
|
||
|
makeVisible(currentIndex);
|
||
|
q->update();
|
||
|
- q->updateGeometry();
|
||
|
}
|
||
|
+ q->updateGeometry();
|
||
|
}
|
||
|
|
||
|
/*!
|
||
|
--
|
||
|
1.6.2.5
|
||
|
|