diff -r 2f34d5167611 -r fcece45ef507 src/gui/itemviews/qtreeview.cpp --- a/src/gui/itemviews/qtreeview.cpp Fri Apr 16 15:50:13 2010 +0300 +++ b/src/gui/itemviews/qtreeview.cpp Mon May 03 13:17:34 2010 +0300 @@ -3770,10 +3770,15 @@ if (previousSibiling != -1 && after && model->rowCount(parent) == start) viewItems[previousSibiling].hasMoreSiblings = false; - - updateChildCount(parentItem, -removedCount); - if (parentItem != -1 && viewItems.at(parentItem).total == 0) - viewItems[parentItem].hasChildren = false; //every children have been removed; + if (parentItem != -1) { + if (viewItems.at(parentItem).expanded) { + updateChildCount(parentItem, -removedCount); + if (viewItems.at(parentItem).total == 0) + viewItems[parentItem].hasChildren = false; //every children have been removed; + } else if (viewItems[parentItem].hasChildren && !hasVisibleChildren(parent)) { + viewItems[parentItem].hasChildren = false; + } + } if (after) { q->updateGeometries(); viewport->update();