Plugins/VcsPlugins/vcsSubversion/SvnLogBrowserDialog.py

changeset 5450
a5d5e757efcf
parent 5449
7679d1d3671a
child 5517
805b36a7ffb7
diff -r 7679d1d3671a -r a5d5e757efcf Plugins/VcsPlugins/vcsSubversion/SvnLogBrowserDialog.py
--- a/Plugins/VcsPlugins/vcsSubversion/SvnLogBrowserDialog.py	Sat Jan 28 14:22:00 2017 +0100
+++ b/Plugins/VcsPlugins/vcsSubversion/SvnLogBrowserDialog.py	Sat Jan 28 16:02:52 2017 +0100
@@ -101,6 +101,21 @@
         self.__logTreeNormalFont.setBold(False)
         self.__logTreeBoldFont = self.logTree.font()
         self.__logTreeBoldFont.setBold(True)
+        
+        self.__finishCallbacks = []
+    
+    def __addFinishCallback(self, callback):
+        """
+        Private method to add a method to be called once the process finished.
+        
+        The callback methods are invoke in a FIFO style and are consumed. If
+        a callback method needs to be called again, it must be added again.
+        
+        @param callback callback method
+        @type function
+        """
+        if callback not in self.__finishCallbacks:
+            self.__finishCallbacks.append(callback)
     
     def __initData(self):
         """
@@ -358,6 +373,9 @@
         
         self.inputGroup.setEnabled(False)
         self.inputGroup.hide()
+        
+        while self.__finishCallbacks:
+            self.__finishCallbacks.pop(0)()
     
     def __processBuffer(self):
         """
@@ -697,8 +715,8 @@
             self.logTree.setCurrentItem(itm)
         else:
             # load the next bunch and try again
+            self.__addFinishCallback(self.on_downButton_clicked)
             self.on_nextButton_clicked()
-            self.on_downButton_clicked()
     
     def on_passwordCheckBox_toggled(self, isOn):
         """

eric ide

mercurial