diff options
author | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2018-10-05 21:49:47 +0200 |
---|---|---|
committer | Christian Ehrlicher <ch.ehrlicher@gmx.de> | 2018-10-13 10:51:31 +0000 |
commit | daba850df8bc9decd53e7719c83bf834e7f21654 (patch) | |
tree | 243d20073f9adb7ebed006d6d95a278d916fdfef /src/widgets/itemviews/qtreeview.cpp | |
parent | 2672a9a767909eab04ec6706bdef8a891a8f3d21 (diff) |
QTreeView: small optimization in verticalOffset()
When the scroll mode is ScrollPerItem and uniformRowHeights is not set,
the offset has to be calculated by iterating over all items.
Optimize the loop by calculating the last item before the loop instead
of checking at every iteration.
Task-number: QTBUG-61763
Change-Id: I1d4439fe0fc3f32194f5f368c0486e793048d965
Reviewed-by: David Faure <david.faure@kdab.com>
Reviewed-by: Luca Beldi <v.ronin@yahoo.it>
Diffstat (limited to 'src/widgets/itemviews/qtreeview.cpp')
-rw-r--r-- | src/widgets/itemviews/qtreeview.cpp | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp index dd2bcb124e..b65cf5af2b 100644 --- a/src/widgets/itemviews/qtreeview.cpp +++ b/src/widgets/itemviews/qtreeview.cpp @@ -2153,12 +2153,10 @@ int QTreeView::verticalOffset() const // ### find a faster way to do this d->executePostedLayout(); int offset = 0; - for (int i = 0; i < d->viewItems.count(); ++i) { - if (i == verticalScrollBar()->value()) - return offset; + const int cnt = std::min(d->viewItems.count(), verticalScrollBar()->value()); + for (int i = 0; i < cnt; ++i) offset += d->itemHeight(i); - } - return 0; + return offset; } // scroll per pixel return verticalScrollBar()->value(); |