]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Fix visibility issues of group-headers
authorPeter Penz <peter.penz19@gmail.com>
Tue, 25 Oct 2011 22:56:37 +0000 (00:56 +0200)
committerPeter Penz <peter.penz19@gmail.com>
Tue, 25 Oct 2011 22:58:03 +0000 (00:58 +0200)
When expanding/collapsing folders in the tree-view the visibility
of group-headers got unpredictable.

src/kitemviews/kitemlistgroupheader.cpp
src/kitemviews/kitemlistview.cpp
src/kitemviews/kitemlistviewlayouter.cpp

index 7413a7d2586ca45f5a8e7406d3174d81452e498b..0cc04dc2554c81d7773646ab8ec029f1cecfb01e 100644 (file)
@@ -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);
 
index 2c88160fe3719b2a838ce8681441134d60b5d204..6b199c1bbb7b1007b4010b64ce075a17f5a90e60 100644 (file)
@@ -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);
 }
 
index cb0e9cf5555b64edaf3e34f11f86d91da608914d..728a67aa5698cd5c27da0af279eb0d0c5c41a379 100644 (file)
@@ -260,6 +260,7 @@ int KItemListViewLayouter::itemsPerOffset() const
 
 bool KItemListViewLayouter::isFirstGroupItem(int itemIndex) const
 {
+    const_cast<KItemListViewLayouter*>(this)->doLayout();
     return m_groupItemIndexes.contains(itemIndex);
 }