summaryrefslogtreecommitdiffstats
path: root/abs/core/qt/fix-scroll-when-last-item-is-removed.patch
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core/qt/fix-scroll-when-last-item-is-removed.patch')
-rw-r--r--abs/core/qt/fix-scroll-when-last-item-is-removed.patch38
1 files changed, 38 insertions, 0 deletions
diff --git a/abs/core/qt/fix-scroll-when-last-item-is-removed.patch b/abs/core/qt/fix-scroll-when-last-item-is-removed.patch
new file mode 100644
index 0000000..8656702
--- /dev/null
+++ b/abs/core/qt/fix-scroll-when-last-item-is-removed.patch
@@ -0,0 +1,38 @@
+From 6da6b7099d4e0b49329793e4b90703ec3d868048 Mon Sep 17 00:00:00 2001
+From: Frank Reininghaus <frank78ac@googlemail.com>
+Date: Wed, 22 Sep 2010 10:19:59 +0200
+Subject: [PATCH] QTreeView: do not scroll to top if last item is removed
+
+When the last item is the current item and is removed,
+QTreeViewPrivate::updateScrollBars() is called after QTreeViewPrivate's
+viewItems member is cleared. This commit makes sure that viewItems is
+restored by calling QTreeView::doItemsLayout() in this case, preventing
+that the scroll bar range is set to zero temporarily and the view is
+scrolled to the top unexpectedly (this was a regression in 4.7.0:
+QTBUG-13567).
+
+Merge-request: 2481
+Reviewed-by: Olivier Goffart <olivier.goffart@nokia.com>
+---
+ src/gui/itemviews/qtreeview.cpp | 4 ++++
+ tests/auto/qtreeview/tst_qtreeview.cpp | 22 ++++++++++++++++++++++
+ 2 files changed, 26 insertions(+), 0 deletions(-)
+
+diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp
+index b797776..40b51fe 100644
+--- a/src/gui/itemviews/qtreeview.cpp
++++ b/src/gui/itemviews/qtreeview.cpp
+@@ -3435,6 +3435,10 @@ void QTreeViewPrivate::updateScrollBars()
+ if (!viewportSize.isValid())
+ viewportSize = QSize(0, 0);
+
++ if (viewItems.isEmpty()) {
++ q->doItemsLayout();
++ }
++
+ int itemsInViewport = 0;
+ if (uniformRowHeights) {
+ if (defaultItemHeight <= 0)
+--
+1.6.1
+