X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/7a593fc92bf28fbdcdec0e241e18ee8ba2ad7334..6dcbb8127c:/src/kitemviews/private/kitemlistsizehintresolver.cpp 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; } }