diff options
| author | Peter Penz <[email protected]> | 2011-10-26 00:56:37 +0200 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2011-10-26 00:58:03 +0200 |
| commit | 82b56ca6fd8831a896d1f6584b3a7dc0df6a8f85 (patch) | |
| tree | aa750999577366777e0cb571531bd1e2e4707e0f /src | |
| parent | a3d883e73b75bdf654268c53811a2b4ac42b97e7 (diff) | |
Fix visibility issues of group-headers
When expanding/collapsing folders in the tree-view the visibility
of group-headers got unpredictable.
Diffstat (limited to 'src')
| -rw-r--r-- | src/kitemviews/kitemlistgroupheader.cpp | 2 | ||||
| -rw-r--r-- | src/kitemviews/kitemlistview.cpp | 12 | ||||
| -rw-r--r-- | src/kitemviews/kitemlistviewlayouter.cpp | 1 |
3 files changed, 10 insertions, 5 deletions
diff --git a/src/kitemviews/kitemlistgroupheader.cpp b/src/kitemviews/kitemlistgroupheader.cpp index 7413a7d25..0cc04dc25 100644 --- a/src/kitemviews/kitemlistgroupheader.cpp +++ b/src/kitemviews/kitemlistgroupheader.cpp @@ -164,7 +164,7 @@ void KItemListGroupHeader::updateCache() delete m_leftBorderCache; delete m_rightBorderCache; - const int length = size().height() - 1; + const int length = qMax(int(size().height() - 1), 1); m_leftBorderCache = new QPixmap(length, length); m_leftBorderCache->fill(Qt::transparent); diff --git a/src/kitemviews/kitemlistview.cpp b/src/kitemviews/kitemlistview.cpp index 2c88160fe..6b199c1bb 100644 --- a/src/kitemviews/kitemlistview.cpp +++ b/src/kitemviews/kitemlistview.cpp @@ -1203,6 +1203,10 @@ void KItemListView::doLayout(LayoutAnimationHint hint, int changedIndex, int cha if (invisible && !m_animation->isStarted(widget)) { widget->setVisible(false); reusableItems.append(index); + + if (m_grouped) { + recycleGroupHeaderForWidget(widget); + } } } @@ -1224,6 +1228,10 @@ void KItemListView::doLayout(LayoutAnimationHint hint, int changedIndex, int cha const int oldIndex = reusableItems.takeLast(); widget = m_visibleItems.value(oldIndex); setWidgetIndex(widget, i); + + if (m_grouped) { + updateGroupHeaderForWidget(widget); + } } else { // No reusable KItemListWidget instance is available, create a new one widget = createWidget(i); @@ -1367,10 +1375,6 @@ void KItemListView::setWidgetIndex(KItemListWidget* widget, int index) updateWidgetProperties(widget, index); m_visibleItems.insert(index, widget); - if (m_grouped) { - updateGroupHeaderForWidget(widget); - } - initializeItemListWidget(widget); } diff --git a/src/kitemviews/kitemlistviewlayouter.cpp b/src/kitemviews/kitemlistviewlayouter.cpp index cb0e9cf55..728a67aa5 100644 --- a/src/kitemviews/kitemlistviewlayouter.cpp +++ b/src/kitemviews/kitemlistviewlayouter.cpp @@ -260,6 +260,7 @@ int KItemListViewLayouter::itemsPerOffset() const bool KItemListViewLayouter::isFirstGroupItem(int itemIndex) const { + const_cast<KItemListViewLayouter*>(this)->doLayout(); return m_groupItemIndexes.contains(itemIndex); } |
