diff -r 56cd8111b7f7 -r 41300fa6a67c src/gui/itemviews/qtreewidget.cpp --- 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); } /*!