src/gui/itemviews/qtreewidget.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
--- a/src/gui/itemviews/qtreewidget.cpp	Tue Jan 26 12:42:25 2010 +0200
+++ b/src/gui/itemviews/qtreewidget.cpp	Tue Feb 02 00:43:10 2010 +0200
@@ -1580,7 +1580,7 @@
     if (!view)
         return;
 
-    view->viewport()->update( view->d_func()->itemDecorationRect(view->d_func()->index(this)));
+    view->scheduleDelayedItemsLayout();
 }
 
 /*!
@@ -2851,7 +2851,14 @@
 QRect QTreeWidget::visualItemRect(const QTreeWidgetItem *item) const
 {
     Q_D(const QTreeWidget);
-    return visualRect(d->index(item));
+    //the visual rect for an item is across all columns. So we need to determine
+	//what is the first and last column and get their visual index rects
+    QModelIndex base = d->index(item);
+    const int firstVisiblesection = header()->logicalIndexAt(- header()->offset());
+    const int lastVisibleSection = header()->logicalIndexAt(header()->length() - header()->offset() - 1);
+    QModelIndex first = base.sibling(base.row(), header()->logicalIndex(firstVisiblesection));
+    QModelIndex last = base.sibling(base.row(), header()->logicalIndex(lastVisibleSection));
+    return visualRect(first) | visualRect(last);
 }
 
 /*!