┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFrank Reininghaus <[email protected]>2013-04-23 19:40:42 +0200
committerFrank Reininghaus <[email protected]>2013-04-23 19:40:42 +0200
commit7f381a34cb37ff4aeb215a8fe91448e5ea27aca0 (patch)
tree30dc3aba09fa11aa8de805651aeae39a809ac128 /src
parent9b30145ac31d2bf4d108c836616b5090ed783899 (diff)
parent8f4d13dab8165e4c60c320d4b867e8476bdb041b (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.cpp1
-rw-r--r--src/kitemviews/kfileitemmodelrolesupdater.cpp17
-rw-r--r--src/kitemviews/kfileitemmodelrolesupdater.h3
-rw-r--r--src/kitemviews/kitemlistview.cpp10
-rw-r--r--src/kitemviews/kitemlistview.h2
-rw-r--r--src/kitemviews/kitemlistviewaccessible.cpp12
-rw-r--r--src/kitemviews/private/kitemlistroleeditor.cpp1
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) {