apply upstream patch to fix QTreeView-regression
This commit is contained in:
parent
a4cb425a1d
commit
79a460b197
@ -0,0 +1,77 @@
|
|||||||
|
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)
|
||||||
|
diff --git a/tests/auto/qtreeview/tst_qtreeview.cpp b/tests/auto/qtreeview/tst_qtreeview.cpp
|
||||||
|
index 7e2e800..c7b53e9 100644
|
||||||
|
--- a/tests/auto/qtreeview/tst_qtreeview.cpp
|
||||||
|
+++ b/tests/auto/qtreeview/tst_qtreeview.cpp
|
||||||
|
@@ -240,6 +240,7 @@ private slots:
|
||||||
|
void taskQTBUG_6450_selectAllWith1stColumnHidden();
|
||||||
|
void taskQTBUG_9216_setSizeAndUniformRowHeightsWrongRepaint();
|
||||||
|
void taskQTBUG_11466_keyboardNavigationRegression();
|
||||||
|
+ void taskQTBUG_13567_removeLastItemRegression();
|
||||||
|
};
|
||||||
|
|
||||||
|
class QtTestModel: public QAbstractItemModel
|
||||||
|
@@ -3910,5 +3911,26 @@ void tst_QTreeView::taskQTBUG_11466_keyboardNavigationRegression()
|
||||||
|
QTRY_COMPARE(treeView.currentIndex(), treeView.selectionModel()->selection().indexes().first());
|
||||||
|
}
|
||||||
|
|
||||||
|
+void tst_QTreeView::taskQTBUG_13567_removeLastItemRegression()
|
||||||
|
+{
|
||||||
|
+ QtTestModel model(200, 1);
|
||||||
|
+
|
||||||
|
+ QTreeView view;
|
||||||
|
+ view.setSelectionMode(QAbstractItemView::ExtendedSelection);
|
||||||
|
+ view.setModel(&model);
|
||||||
|
+ view.show();
|
||||||
|
+ QTest::qWaitForWindowShown(&view);
|
||||||
|
+
|
||||||
|
+ view.scrollToBottom();
|
||||||
|
+ QTest::qWait(10);
|
||||||
|
+ CHECK_VISIBLE(199, 0);
|
||||||
|
+
|
||||||
|
+ view.setCurrentIndex(model.index(199, 0));
|
||||||
|
+ model.removeLastRow();
|
||||||
|
+ QTest::qWait(10);
|
||||||
|
+ QCOMPARE(view.currentIndex(), model.index(198, 0));
|
||||||
|
+ CHECK_VISIBLE(198, 0);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
QTEST_MAIN(tst_QTreeView)
|
||||||
|
#include "tst_qtreeview.moc"
|
||||||
|
--
|
||||||
|
1.6.1
|
||||||
|
|
7
qt.spec
7
qt.spec
@ -18,7 +18,7 @@ Summary: Qt toolkit
|
|||||||
Name: qt
|
Name: qt
|
||||||
Epoch: 1
|
Epoch: 1
|
||||||
Version: 4.7.0
|
Version: 4.7.0
|
||||||
Release: 3%{?dist}
|
Release: 4%{?dist}
|
||||||
|
|
||||||
# See LGPL_EXCEPTIONS.txt, LICENSE.GPL3, respectively, for exception details
|
# See LGPL_EXCEPTIONS.txt, LICENSE.GPL3, respectively, for exception details
|
||||||
License: (LGPLv2 with exceptions or GPLv3 with exceptions) and ASL 2.0 and BSD and FTL and MIT
|
License: (LGPLv2 with exceptions or GPLv3 with exceptions) and ASL 2.0 and BSD and FTL and MIT
|
||||||
@ -82,6 +82,7 @@ Patch62: qt-4.6.3-indic-rendering-bz636399.patch
|
|||||||
# security patches
|
# security patches
|
||||||
|
|
||||||
# upstream patches
|
# upstream patches
|
||||||
|
Patch100: qt-everywhere-opensource-src-4.7.0-QTBUG-13567-QTreeView.patch
|
||||||
|
|
||||||
# kde-qt git patches
|
# kde-qt git patches
|
||||||
Patch202: 0002-This-patch-makes-override-redirect-windows-popup-men.patch
|
Patch202: 0002-This-patch-makes-override-redirect-windows-popup-men.patch
|
||||||
@ -435,6 +436,7 @@ Qt libraries used for drawing widgets and OpenGL items.
|
|||||||
# security fixes
|
# security fixes
|
||||||
|
|
||||||
# upstream patches
|
# upstream patches
|
||||||
|
%patch100 -p1 -b .QTBUG-13567-QTreeView
|
||||||
|
|
||||||
# kde-qt branch
|
# kde-qt branch
|
||||||
%if 0%{?kde_qt}
|
%if 0%{?kde_qt}
|
||||||
@ -1095,6 +1097,9 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Sep 27 2010 Than Ngo <than@redhat.com> - 4.7.0-4
|
||||||
|
- apply upstream patch to fix QTreeView-regression
|
||||||
|
|
||||||
* Thu Sep 23 2010 Than Ngo <than@redhat.com> - 4.7.0-3
|
* Thu Sep 23 2010 Than Ngo <than@redhat.com> - 4.7.0-3
|
||||||
- fix typo in license
|
- fix typo in license
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user