┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/private/kitemlistsizehintresolver.cpp
diff options
context:
space:
mode:
authorElvis Angelaccio <[email protected]>2016-11-20 13:04:47 +0100
committerElvis Angelaccio <[email protected]>2016-11-20 13:04:47 +0100
commit4322ef4114b0b92eee8aa1e941e23188496fbab5 (patch)
treef6d83aeb14d110dbe32f82662c1189a7a4a132d0 /src/kitemviews/private/kitemlistsizehintresolver.cpp
parent341a09fafd5b817d999832e4650435153611f85f (diff)
parent90beb4a5e37b887caad1e767046a42dad0af1ab3 (diff)
Merge branch 'Applications/16.12'
* Applications/16.12: Fix slow scrolling in dock panels
Diffstat (limited to 'src/kitemviews/private/kitemlistsizehintresolver.cpp')
-rw-r--r--src/kitemviews/private/kitemlistsizehintresolver.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/kitemviews/private/kitemlistsizehintresolver.cpp b/src/kitemviews/private/kitemlistsizehintresolver.cpp
index 1d8067026..02f1865b3 100644
--- a/src/kitemviews/private/kitemlistsizehintresolver.cpp
+++ b/src/kitemviews/private/kitemlistsizehintresolver.cpp
@@ -25,6 +25,7 @@ KItemListSizeHintResolver::KItemListSizeHintResolver(const KItemListView* itemLi
m_itemListView(itemListView),
m_logicalHeightHintCache(),
m_logicalWidthHint(0.0),
+ m_logicalHeightHint(0.0),
m_needsResolving(false)
{
}
@@ -33,6 +34,12 @@ KItemListSizeHintResolver::~KItemListSizeHintResolver()
{
}
+QSizeF KItemListSizeHintResolver::maxSizeHint()
+{
+ updateCache();
+ return QSizeF(m_logicalWidthHint, m_logicalHeightHint);
+}
+
QSizeF KItemListSizeHintResolver::sizeHint(int index)
{
updateCache();
@@ -149,6 +156,12 @@ void KItemListSizeHintResolver::updateCache()
{
if (m_needsResolving) {
m_itemListView->calculateItemSizeHints(m_logicalHeightHintCache, m_logicalWidthHint);
+ // Set logical height as the max cached height (if the cache is not empty).
+ if (m_logicalHeightHintCache.isEmpty()) {
+ m_logicalHeightHint = 0.0;
+ } else {
+ m_logicalHeightHint = *std::max_element(m_logicalHeightHintCache.begin(), m_logicalHeightHintCache.end());
+ }
m_needsResolving = false;
}
}