diff options
| author | Frank Reininghaus <[email protected]> | 2013-04-23 19:40:42 +0200 |
|---|---|---|
| committer | Frank Reininghaus <[email protected]> | 2013-04-23 19:40:42 +0200 |
| commit | 7f381a34cb37ff4aeb215a8fe91448e5ea27aca0 (patch) | |
| tree | 30dc3aba09fa11aa8de805651aeae39a809ac128 /src | |
| parent | 9b30145ac31d2bf4d108c836616b5090ed783899 (diff) | |
| parent | 8f4d13dab8165e4c60c320d4b867e8476bdb041b (diff) | |
Merge remote-tracking branch 'origin/KDE/4.10'
Conflicts:
plasma/applets/folderview/folderview.cpp
CCMAIL: [email protected]
@Ignat: We've been following a merge-based approach in kde-baseapps
for quite some time now, see
http://lists.kde.org/?t=134744909400005&r=1&w=1
It would be nice if you could merge KDE/4.10 into master after any
non-trivial changes in folderview to prevent that others have to
figure out how to resolve the merge conflicts. Thanks!
Diffstat (limited to 'src')
| -rw-r--r-- | src/kitemviews/kfileitemlistview.cpp | 1 | ||||
| -rw-r--r-- | src/kitemviews/kfileitemmodelrolesupdater.cpp | 17 | ||||
| -rw-r--r-- | src/kitemviews/kfileitemmodelrolesupdater.h | 3 | ||||
| -rw-r--r-- | src/kitemviews/kitemlistview.cpp | 10 | ||||
| -rw-r--r-- | src/kitemviews/kitemlistview.h | 2 | ||||
| -rw-r--r-- | src/kitemviews/kitemlistviewaccessible.cpp | 12 | ||||
| -rw-r--r-- | src/kitemviews/private/kitemlistroleeditor.cpp | 1 |
7 files changed, 41 insertions, 5 deletions
diff --git a/src/kitemviews/kfileitemlistview.cpp b/src/kitemviews/kfileitemlistview.cpp index b7f7455b4..70ce11b1f 100644 --- a/src/kitemviews/kfileitemlistview.cpp +++ b/src/kitemviews/kfileitemlistview.cpp @@ -323,6 +323,7 @@ void KFileItemListView::updateVisibleIndexRange() const int index = firstVisibleIndex(); const int count = lastVisibleIndex() - index + 1; + m_modelRolesUpdater->setMaximumVisibleItems(maximumVisibleItems()); m_modelRolesUpdater->setVisibleIndexRange(index, count); if (m_updateIconSizeTimer->isActive()) { 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); diff --git a/src/kitemviews/kfileitemmodelrolesupdater.h b/src/kitemviews/kfileitemmodelrolesupdater.h index 68559d8dd..b837e8c7f 100644 --- a/src/kitemviews/kfileitemmodelrolesupdater.h +++ b/src/kitemviews/kfileitemmodelrolesupdater.h @@ -77,6 +77,8 @@ public: */ void setVisibleIndexRange(int index, int count); + void setMaximumVisibleItems(int count); + /** * If \a show is set to true, the "iconPixmap" role will be filled with a preview * of the file. If \a show is false the MIME type icon will be used for the "iconPixmap" @@ -254,6 +256,7 @@ private: QSize m_iconSize; int m_firstVisibleIndex; int m_lastVisibleIndex; + int m_maximumVisibleItems; QSet<QByteArray> m_roles; QSet<QByteArray> m_resolvableRoles; QStringList m_enabledPlugins; diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp index 9ebad7f8b..a2629c565 100644 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -208,6 +208,11 @@ qreal KItemListView::maximumItemOffset() const return m_layouter->maximumItemOffset(); } +int KItemListView::maximumVisibleItems() const +{ + return m_layouter->maximumVisibleItems(); +} + void KItemListView::setVisibleRoles(const QList<QByteArray>& roles) { const QList<QByteArray> previousRoles = m_visibleRoles; @@ -1142,7 +1147,10 @@ void KItemListView::slotItemsRemoved(const KItemRangeList& itemRanges) // Important: Don't read any m_layouter-property inside the for-loop in case if // multiple ranges are given! m_layouter accesses m_sizeHintResolver which is // updated in each loop-cycle and has only a consistent state after the loop. - Q_ASSERT(m_layouter->isDirty()); + // TODO: This assert can be hit when filtering in Icons and Compact view, + // see https://bugs.kde.org/show_bug.cgi?id=317827 comments 2 and 3. + // We should try to figure out if the assert is wrong or if there is a bug in the code. + //Q_ASSERT(m_layouter->isDirty()); #endif m_endTransactionAnimationHint = NoAnimation; endTransaction(); diff --git a/src/kitemviews/kitemlistview.h b/src/kitemviews/kitemlistview.h index cd59ddcb5..6d609a9df 100644 --- a/src/kitemviews/kitemlistview.h +++ b/src/kitemviews/kitemlistview.h @@ -92,6 +92,8 @@ public: qreal maximumItemOffset() const; + int maximumVisibleItems() const; + void setVisibleRoles(const QList<QByteArray>& roles); QList<QByteArray> visibleRoles() const; diff --git a/src/kitemviews/kitemlistviewaccessible.cpp b/src/kitemviews/kitemlistviewaccessible.cpp index d4b8bf6e6..565c2151e 100644 --- a/src/kitemviews/kitemlistviewaccessible.cpp +++ b/src/kitemviews/kitemlistviewaccessible.cpp @@ -242,9 +242,15 @@ QRect KItemListViewAccessible::rect(int child) const if (!view()->isVisible()) { return QRect(); } - const QPoint origin = view()->scene()->views()[0]->mapToGlobal(QPoint(0, 0)); - const QRect viewRect = view()->geometry().toRect(); - return viewRect.translated(origin); + + const QGraphicsScene* scene = view()->scene(); + if (scene) { + const QPoint origin = scene->views()[0]->mapToGlobal(QPoint(0, 0)); + const QRect viewRect = view()->geometry().toRect(); + return viewRect.translated(origin); + } else { + return QRect(); + } } int KItemListViewAccessible::navigate(RelationFlag relation, int index, QAccessibleInterface** interface) const diff --git a/src/kitemviews/private/kitemlistroleeditor.cpp b/src/kitemviews/private/kitemlistroleeditor.cpp index 4f4006010..9f3b53c05 100644 --- a/src/kitemviews/private/kitemlistroleeditor.cpp +++ b/src/kitemviews/private/kitemlistroleeditor.cpp @@ -32,6 +32,7 @@ KItemListRoleEditor::KItemListRoleEditor(QWidget *parent) : setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setAcceptRichText(false); + enableFindReplace(false); document()->setDocumentMargin(0); if (parent) { |
