diff historywidget.cpp @ 154:6bcb4a4d6521

* Try to reduce unnecessary history updates; add --new-branch option on push
author Chris Cannam
date Thu, 02 Dec 2010 18:04:21 +0000
parents 70fe12873106
children 4bad3c5c053a
line wrap: on
line diff
--- a/historywidget.cpp	Thu Dec 02 17:55:21 2010 +0000
+++ b/historywidget.cpp	Thu Dec 02 18:04:21 2010 +0000
@@ -28,7 +28,9 @@
 
 #include <QGridLayout>
 
-HistoryWidget::HistoryWidget()
+HistoryWidget::HistoryWidget() :
+    m_showUncommitted(false),
+    m_refreshNeeded(false)
 {
     m_panned = new Panned;
     m_panner = new Panner;
@@ -78,7 +80,7 @@
         m_currentIds.push_back(id);
     }
 
-    layoutAll();
+    m_refreshNeeded = true;
 }
     
 void HistoryWidget::parseNewLog(QString log)
@@ -87,7 +89,7 @@
     Changesets csets = Changeset::parseChangesets(log);
     DEBUG << "HistoryWidget::parseNewLog: log has " << csets.size() << " changesets" << endl;
     replaceChangesets(csets);
-    layoutAll();
+    m_refreshNeeded = true;
 }
     
 void HistoryWidget::parseIncrementalLog(QString log)
@@ -97,8 +99,8 @@
     DEBUG << "HistoryWidget::parseIncrementalLog: log has " << csets.size() << " changesets" << endl;
     if (!csets.empty()) {
         addChangesets(csets);
-        layoutAll();
     }
+    m_refreshNeeded = true;
 }
 
 void HistoryWidget::replaceChangesets(Changesets csets)
@@ -142,8 +144,17 @@
     m_changesets = csets;
 }
 
+void HistoryWidget::update()
+{
+    if (m_refreshNeeded) {
+        layoutAll();
+    }
+}
+
 void HistoryWidget::layoutAll()
 {
+    m_refreshNeeded = false;
+
     setChangesetParents();
 
     ChangesetScene *scene = new ChangesetScene();