mirror of
https://invent.kde.org/system/dolphin
synced 2024-08-22 01:40:02 +00:00
base scrolling on the smallest item
Summary: CCBUG: 386379 after recent highdpi patches on scrolling that delegated it completely to the scrollbar, based upon the scrollbar singleStep setted to the tallest of the items in the view. tough this makes scrolling way too fast, and on folders where just few filenames are longer than most we can get a single scrolling step almost double the number of lines configured in the mouse kcm. Using the shortest item instead of the tallest mitigates this problem making it a bit more usable Test Plan: tested on different folders in different view modes both with mouse and touchpad Reviewers: #dolphin, broulik, ngraham Reviewed By: #dolphin, ngraham Subscribers: ngraham, plasma-devel Tags: #plasma Differential Revision: https://phabricator.kde.org/D10102
This commit is contained in:
parent
7caef6d251
commit
0b130dd57e
|
@ -35,7 +35,6 @@
|
|||
#include <QStyle>
|
||||
#include <QStyleOption>
|
||||
|
||||
|
||||
/**
|
||||
* Replaces the default viewport of KItemListContainer by a
|
||||
* non-scrollable viewport. The scrolling is done in an optimized
|
||||
|
|
|
@ -342,7 +342,7 @@ QSizeF KItemListView::itemSize() const
|
|||
|
||||
QSizeF KItemListView::itemSizeHint() const
|
||||
{
|
||||
return m_sizeHintResolver->maxSizeHint();
|
||||
return m_sizeHintResolver->minSizeHint();
|
||||
}
|
||||
|
||||
const KItemListStyleOption& KItemListView::styleOption() const
|
||||
|
|
|
@ -26,6 +26,7 @@ KItemListSizeHintResolver::KItemListSizeHintResolver(const KItemListView* itemLi
|
|||
m_logicalHeightHintCache(),
|
||||
m_logicalWidthHint(0.0),
|
||||
m_logicalHeightHint(0.0),
|
||||
m_minHeightHint(0.0),
|
||||
m_needsResolving(false)
|
||||
{
|
||||
}
|
||||
|
@ -40,6 +41,12 @@ QSizeF KItemListSizeHintResolver::maxSizeHint()
|
|||
return QSizeF(m_logicalWidthHint, m_logicalHeightHint);
|
||||
}
|
||||
|
||||
QSizeF KItemListSizeHintResolver::minSizeHint()
|
||||
{
|
||||
updateCache();
|
||||
return QSizeF(m_logicalWidthHint, m_minHeightHint);
|
||||
}
|
||||
|
||||
QSizeF KItemListSizeHintResolver::sizeHint(int index)
|
||||
{
|
||||
updateCache();
|
||||
|
@ -161,6 +168,7 @@ void KItemListSizeHintResolver::updateCache()
|
|||
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;
|
||||
}
|
||||
|
|
|
@ -37,6 +37,7 @@ public:
|
|||
KItemListSizeHintResolver(const KItemListView* itemListView);
|
||||
virtual ~KItemListSizeHintResolver();
|
||||
QSizeF maxSizeHint();
|
||||
QSizeF minSizeHint();
|
||||
QSizeF sizeHint(int index);
|
||||
|
||||
void itemsInserted(const KItemRangeList& itemRanges);
|
||||
|
@ -52,6 +53,7 @@ private:
|
|||
mutable QVector<qreal> m_logicalHeightHintCache;
|
||||
mutable qreal m_logicalWidthHint;
|
||||
mutable qreal m_logicalHeightHint;
|
||||
mutable qreal m_minHeightHint;
|
||||
bool m_needsResolving;
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue