diff historywidget.cpp @ 139:e8a481789607

* Avoid unnecessary duplicate layout; fix off-by-one in resetting changeset children
author Chris Cannam
date Tue, 30 Nov 2010 14:27:34 +0000
parents a7dbc8e5b69d
children e6c6b88d19b9
line wrap: on
line diff
--- a/historywidget.cpp	Tue Nov 30 13:51:50 2010 +0000
+++ b/historywidget.cpp	Tue Nov 30 14:27:34 2010 +0000
@@ -70,8 +70,15 @@
 
 void HistoryWidget::showUncommittedChanges(bool show)
 {
+    if (m_uncommittedVisible == show) return;
     m_uncommittedVisible = show;
-    layoutAll();
+    QGraphicsScene *scene = m_panned->scene();
+    if (!scene) return;
+    if (m_uncommittedVisible) {
+        scene->addItem(m_uncommitted);
+    } else {
+        scene->removeItem(m_uncommitted);
+    }
 }
     
 void HistoryWidget::parseNewLog(QString log)
@@ -185,12 +192,15 @@
 
 void HistoryWidget::setChangesetParents()
 {
-    for (int i = 0; i+1 < m_changesets.size(); ++i) {
+    for (int i = 0; i < m_changesets.size(); ++i) {
         Changeset *cs = m_changesets[i];
         // Need to reset this, as Grapher::layout will recalculate it
         // and we don't want to end up with twice the children for
         // each parent...
         cs->setChildren(QStringList());
+    }
+    for (int i = 0; i+1 < m_changesets.size(); ++i) {
+        Changeset *cs = m_changesets[i];
         if (cs->parents().empty()) {
             QStringList list;
             list.push_back(m_changesets[i+1]->id());