summaryrefslogtreecommitdiffstats
path: root/libraries/qt4/patches/0225-invalidate-tabbar-geometry-on-refresh.patch
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/qt4/patches/0225-invalidate-tabbar-geometry-on-refresh.patch')
-rw-r--r--libraries/qt4/patches/0225-invalidate-tabbar-geometry-on-refresh.patch35
1 files changed, 35 insertions, 0 deletions
diff --git a/libraries/qt4/patches/0225-invalidate-tabbar-geometry-on-refresh.patch b/libraries/qt4/patches/0225-invalidate-tabbar-geometry-on-refresh.patch
new file mode 100644
index 0000000000..49daca322f
--- /dev/null
+++ b/libraries/qt4/patches/0225-invalidate-tabbar-geometry-on-refresh.patch
@@ -0,0 +1,35 @@
+qt-bugs@ issue : 208185
+Trolltech task ID : 208349
+bugs.kde.org number : 159014
+applied: no
+author: Robert Knight <robertknight@gmail.com>
+
+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.
+
+Index: src/gui/widgets/qtabbar.cpp
+===================================================================
+--- src/gui/widgets/qtabbar.cpp (revision 796858)
++++ src/gui/widgets/qtabbar.cpp (working copy)
+@@ -533,8 +533,8 @@
+ layoutTabs();
+ makeVisible(currentIndex);
+ q->update();
+- q->updateGeometry();
+ }
++ q->updateGeometry();
+ }
+
+ /*!