From 82b56ca6fd8831a896d1f6584b3a7dc0df6a8f85 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Wed, 26 Oct 2011 00:56:37 +0200 Subject: [PATCH] Fix visibility issues of group-headers When expanding/collapsing folders in the tree-view the visibility of group-headers got unpredictable. --- src/kitemviews/kitemlistgroupheader.cpp | 2 +- src/kitemviews/kitemlistview.cpp | 12 ++++++++---- 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(this)->doLayout(); return m_groupItemIndexes.contains(itemIndex); } -- 2.47.3