blob: 86567024fff6eb2935d5e723efbbcfbae6d0a3d4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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
|