diff options
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.patch | 35 |
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(); + } + + /*! |