diff options
| author | Peter Penz <[email protected]> | 2012-04-05 16:12:10 +0200 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2012-04-05 16:13:59 +0200 |
| commit | f28377f1e37a95ddc5d3fdf357d7ede7b298eddb (patch) | |
| tree | c69f073d21df6c80aa261ac7d17d60ecc734bcee /src/kitemviews/kitemlistview.cpp | |
| parent | 1e6031c04debac1accb49ea19912a845f577abee (diff) | |
Fix filtering issue
When filtering items it might be possible that the update of
the widgets is wrong although the model internally has a correct
state.
BUG: 297269
FIXED-IN: 4.8.3
Diffstat (limited to 'src/kitemviews/kitemlistview.cpp')
| -rw-r--r-- | src/kitemviews/kitemlistview.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp index ddc65c387..89c3cbaa6 100644 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -614,7 +614,7 @@ void KItemListView::setHeaderVisible(bool visible) const QSize headerSize = style()->sizeFromContents(QStyle::CT_HeaderSection, &option, QSize()); - m_headerWidget->setPos(0, 0); + m_headerWidget->setPos(0, 0); m_headerWidget->resize(size().width(), headerSize.height()); m_headerWidget->setModel(m_model); m_headerWidget->setColumns(m_visibleRoles); @@ -927,8 +927,13 @@ void KItemListView::slotItemsRemoved(const KItemRangeList& itemRanges) m_layouter->markAsDirty(); + int removedItemsCount = 0; + for (int i = 0; i < itemRanges.count(); ++i) { + removedItemsCount += itemRanges[i].count; + } + for (int i = itemRanges.count() - 1; i >= 0; --i) { - const KItemRange& range = itemRanges.at(i); + const KItemRange& range = itemRanges[i]; const int index = range.index; const int count = range.count; if (index < 0 || count <= 0) { @@ -940,7 +945,8 @@ void KItemListView::slotItemsRemoved(const KItemRangeList& itemRanges) const int firstRemovedIndex = index; const int lastRemovedIndex = index + count - 1; - const int lastIndex = m_model->count() + count - 1; + const int lastIndex = m_model->count() -1 + removedItemsCount; + removedItemsCount -= count; // Remove all KItemListWidget instances that got deleted for (int i = firstRemovedIndex; i <= lastRemovedIndex; ++i) { |
