[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kdelibs] kdeui/itemviews: 1) Make the delegate work always on the model's index, do not go back to
From: Andras Mantia <amantia () kde ! org>
Date: 2013-08-22 15:08:00
Message-ID: E1VCWUS-0007iJ-TL () scm ! kde ! org
[Download RAW message or body]
Git commit 7e60cb9c4887888f8676a1a7a10f3d911f369ae3 by Andras Mantia.
Committed on 22/08/2013 at 14:54.
Pushed by amantia into branch 'master'.
1) Make the delegate work always on the model's index, do not go back to \
the source index, if the model is a proxy (that idea fails anyway with a \
proxy chain) 2) If the option.rect is empty, don't create or update widgets
3) If the option.rect is not in the view's rectangle, do not create the \
widgets. This makes sure that only visible widgets are created.
M +12 -12 kdeui/itemviews/kwidgetitemdelegatepool.cpp
M +1 -1 kdeui/itemviews/kwidgetitemdelegatepool_p.h
http://commits.kde.org/kdelibs/7e60cb9c4887888f8676a1a7a10f3d911f369ae3
diff --git a/kdeui/itemviews/kwidgetitemdelegatepool.cpp \
b/kdeui/itemviews/kwidgetitemdelegatepool.cpp index 2ca52a0..8121c9c 100644
--- a/kdeui/itemviews/kwidgetitemdelegatepool.cpp
+++ b/kdeui/itemviews/kwidgetitemdelegatepool.cpp
@@ -86,7 +86,9 @@ KWidgetItemDelegatePool::~KWidgetItemDelegatePool()
QList<QWidget*> KWidgetItemDelegatePool::findWidgets(const \
QPersistentModelIndex &idx,
const \
QStyleOptionViewItem &option,
- UpdateWidgetsEnum \
updateWidgets) const + \
UpdateWidgetsEnum updateWidgets, + \
bool includeNotVisible + \
) const {
QList<QWidget*> result;
@@ -94,13 +96,13 @@ QList<QWidget*> \
KWidgetItemDelegatePool::findWidgets(const QPersistentModelIndex return \
result; }
- QModelIndex index;
- if (const QAbstractProxyModel *proxyModel = qobject_cast<const \
QAbstractProxyModel*>(idx.model())) {
- index = proxyModel->mapToSource(idx);
- } else {
- index = idx;
+ if (!includeNotVisible && option.rect.isEmpty()) {
+ return result;
}
+ QModelIndex index = idx;
+
+
if (!index.isValid()) {
return result;
}
@@ -108,6 +110,9 @@ QList<QWidget*> \
KWidgetItemDelegatePool::findWidgets(const QPersistentModelIndex if \
(d->usedWidgets.contains(index)) { result = d->usedWidgets[index];
} else {
+ if (!d->delegate->itemView()->rect().contains(option.rect))
+ return result;
+
// ### KDE5 This sets a property on the delegate because we can't \
add an argument to createItemWidgets
d->delegate->setProperty("goya:creatingWidgetForIndex", \
QVariant::fromValue(index)); result = d->delegate->createItemWidgets();
@@ -142,12 +147,7 @@ QList<QWidget*> \
KWidgetItemDelegatePool::invalidIndexesWidgets() const QList<QWidget*> \
result; foreach (QWidget *widget, d->widgetInIndex.keys()) {
const QAbstractProxyModel *proxyModel = qobject_cast<const \
QAbstractProxyModel*>(d->delegate->d->model);
- QModelIndex index;
- if (proxyModel) {
- index = proxyModel->mapFromSource(d->widgetInIndex[widget]);
- } else {
- index = d->widgetInIndex[widget];
- }
+ QModelIndex index = d->widgetInIndex[widget];
if (!index.isValid()) {
result << widget;
}
diff --git a/kdeui/itemviews/kwidgetitemdelegatepool_p.h \
b/kdeui/itemviews/kwidgetitemdelegatepool_p.h index 46bd38b..f632d40 100644
--- a/kdeui/itemviews/kwidgetitemdelegatepool_p.h
+++ b/kdeui/itemviews/kwidgetitemdelegatepool_p.h
@@ -64,7 +64,7 @@ public:
* @internal
*/
QList<QWidget*> findWidgets(const QPersistentModelIndex &index, const \
QStyleOptionViewItem &option,
- UpdateWidgetsEnum updateWidgets = \
UpdateWidgets) const; + UpdateWidgetsEnum \
updateWidgets = UpdateWidgets, bool includeNotVisible = false) const;
/**
* @internal
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic