diff --git a/src/kitemviews/kitemlistcontainer.cpp b/src/kitemviews/kitemlistcontainer.cpp index 5500851c8c..3bd8067a8f 100644 --- a/src/kitemviews/kitemlistcontainer.cpp +++ b/src/kitemviews/kitemlistcontainer.cpp @@ -261,7 +261,9 @@ void KItemListContainer::updateScrollOffsetScrollBar() smoothScroller = m_verticalSmoothScroller; scrollOffsetScrollBar = verticalScrollBar(); singleStep = view->itemSize().height(); - pageStep = view->size().height(); + // 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(); } else { smoothScroller = m_horizontalSmoothScroller; scrollOffsetScrollBar = horizontalScrollBar(); diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp index 6a68ae7989..9ebad7f8bd 100644 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -388,6 +388,15 @@ void KItemListView::setGeometry(const QRectF& rect) } } +qreal KItemListView::verticalPageStep() const +{ + qreal headerHeight = 0; + if (m_headerWidget->isVisible()) { + headerHeight = m_headerWidget->size().height(); + } + return size().height() - headerHeight; +} + int KItemListView::itemAt(const QPointF& pos) const { QHashIterator it(m_visibleItems); diff --git a/src/kitemviews/kitemlistview.h b/src/kitemviews/kitemlistview.h index 2baf20c940..cd59ddcb53 100644 --- a/src/kitemviews/kitemlistview.h +++ b/src/kitemviews/kitemlistview.h @@ -162,6 +162,12 @@ public: /** @reimp */ virtual void setGeometry(const QRectF& rect); + /** + * @return The page step which should be used by the vertical scroll bar. + * This is the height of the view except for the header widget. + */ + qreal verticalPageStep() const; + /** * @return Index of the item that is below the point \a pos. * The position is relative to the upper right of