diff options
Diffstat (limited to 'src/kitemviews/kfileitemmodelrolesupdater.cpp')
| -rw-r--r-- | src/kitemviews/kfileitemmodelrolesupdater.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/kitemviews/kfileitemmodelrolesupdater.cpp b/src/kitemviews/kfileitemmodelrolesupdater.cpp index 9fca8a1f6..39d01e232 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.cpp +++ b/src/kitemviews/kfileitemmodelrolesupdater.cpp @@ -79,6 +79,7 @@ KFileItemModelRolesUpdater::KFileItemModelRolesUpdater(KFileItemModel* model, QO m_iconSize(), m_firstVisibleIndex(0), m_lastVisibleIndex(-1), + m_maximumVisibleItems(100), m_roles(), m_enabledPlugins(), m_pendingVisibleItems(), @@ -178,6 +179,11 @@ void KFileItemModelRolesUpdater::setVisibleIndexRange(int index, int count) } } +void KFileItemModelRolesUpdater::setMaximumVisibleItems(int count) +{ + m_maximumVisibleItems = count; +} + void KFileItemModelRolesUpdater::setPreviewsShown(bool show) { if (show == m_previewShown) { @@ -670,7 +676,16 @@ void KFileItemModelRolesUpdater::startUpdating(const KItemRangeList& itemRanges) const int lastIndex = range.index + range.count - 1; for (int i = range.index; i <= lastIndex; ++i) { const KFileItem item = m_model->fileItem(i); - if (!hasValidIndexRange || (i >= m_firstVisibleIndex && i <= m_lastVisibleIndex)) { + bool visible; + if (hasValidIndexRange) { + visible = (i >= m_firstVisibleIndex && i <= m_lastVisibleIndex); + } else { + // If the view has not informed us about the visible range yet, + // just assume that the first items are visible. + visible = (i < m_maximumVisibleItems); + } + + if (visible) { m_pendingVisibleItems.insert(item); } else { m_pendingInvisibleItems.insert(item); |
