diff --git a/src/kitemviews/kitemlistcontainer.cpp b/src/kitemviews/kitemlistcontainer.cpp --- a/src/kitemviews/kitemlistcontainer.cpp +++ b/src/kitemviews/kitemlistcontainer.cpp @@ -27,6 +27,7 @@ #include "private/kitemlistsmoothscroller.h" #include +#include #include #include #include @@ -261,7 +262,14 @@ if (view->scrollOrientation() == Qt::Vertical) { smoothScroller = m_verticalSmoothScroller; scrollOffsetScrollBar = verticalScrollBar(); - singleStep = view->itemSizeHint().height(); + + // Don't scroll super fast when using a wheel mouse: + // We want to consider one "line" to be the text label which has a + // roughly fixed height rather than using the height of the icon which + // may be very tall + const QFontMetrics metrics(font()); + singleStep = metrics.height() * QApplication::wheelScrollLines(); + // We cannot use view->size().height() because this height might // include the header widget, which is not part of the scrolled area. pageStep = view->verticalPageStep(); diff --git a/src/kitemviews/kitemlistview.h b/src/kitemviews/kitemlistview.h --- a/src/kitemviews/kitemlistview.h +++ b/src/kitemviews/kitemlistview.h @@ -158,11 +158,6 @@ */ QSizeF itemSize() const; - /** - * @return The size hint of all items. It is provided by the KItemListSizeHintResolver. - */ - QSizeF itemSizeHint() const; - const KItemListStyleOption& styleOption() const; void setGeometry(const QRectF& rect) override; diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -335,11 +335,6 @@ return m_itemSize; } -QSizeF KItemListView::itemSizeHint() const -{ - return m_sizeHintResolver->minSizeHint(); -} - const KItemListStyleOption& KItemListView::styleOption() const { return m_styleOption; diff --git a/src/kitemviews/private/kitemlistsizehintresolver.cpp b/src/kitemviews/private/kitemlistsizehintresolver.cpp --- a/src/kitemviews/private/kitemlistsizehintresolver.cpp +++ b/src/kitemviews/private/kitemlistsizehintresolver.cpp @@ -24,7 +24,6 @@ m_itemListView(itemListView), m_logicalHeightHintCache(), m_logicalWidthHint(0.0), - m_logicalHeightHint(0.0), m_minHeightHint(0.0), m_needsResolving(false) { @@ -34,12 +33,6 @@ { } -QSizeF KItemListSizeHintResolver::maxSizeHint() -{ - updateCache(); - return QSizeF(m_logicalWidthHint, m_logicalHeightHint); -} - QSizeF KItemListSizeHintResolver::minSizeHint() { updateCache(); @@ -162,13 +155,6 @@ { 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_minHeightHint = *std::min_element(m_logicalHeightHintCache.begin(), m_logicalHeightHintCache.end()); - } m_needsResolving = false; } }