From: Peter Penz Date: Tue, 25 Oct 2011 22:56:37 +0000 (+0200) Subject: Fix visibility issues of group-headers X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/82b56ca6fd8831a896d1f6584b3a7dc0df6a8f85?ds=inline Fix visibility issues of group-headers When expanding/collapsing folders in the tree-view the visibility of group-headers got unpredictable. --- 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); }