eric6/Plugins/VcsPlugins/vcsPySvn/SvnLogBrowserDialog.py

changeset 7771
787a6b3f8c9f
parent 7533
88261c96484b
child 7774
9eed155411f0
diff -r 49f3377aebf1 -r 787a6b3f8c9f eric6/Plugins/VcsPlugins/vcsPySvn/SvnLogBrowserDialog.py
--- a/eric6/Plugins/VcsPlugins/vcsPySvn/SvnLogBrowserDialog.py	Fri Oct 09 17:19:29 2020 +0200
+++ b/eric6/Plugins/VcsPlugins/vcsPySvn/SvnLogBrowserDialog.py	Sat Oct 10 12:20:51 2020 +0200
@@ -13,12 +13,12 @@
 import pysvn
 
 from PyQt5.QtCore import QMutexLocker, QDate, QRegExp, Qt, pyqtSlot, QPoint
-from PyQt5.QtGui import QCursor
 from PyQt5.QtWidgets import (
     QHeaderView, QWidget, QApplication, QDialogButtonBox, QTreeWidgetItem
 )
 
 from E5Gui import E5MessageBox
+from E5Gui.E5OverrideCursor import E5OverrideCursor
 
 from .SvnUtilities import formatTime, dateFromTime_t
 from .SvnDialogMixin import SvnDialogMixin
@@ -264,9 +264,6 @@
         fetchLimit = 10
         self._reset()
         
-        QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
-        QApplication.processEvents()
-        
         limit = self.limitSpinBox.value()
         if startRev is None:
             start = pysvn.Revision(pysvn.opt_revision_kind.head)
@@ -277,70 +274,71 @@
             except TypeError:
                 start = pysvn.Revision(pysvn.opt_revision_kind.head)
         
-        locker = QMutexLocker(self.vcs.vcsExecutionMutex)
-        cwd = os.getcwd()
-        os.chdir(self.dname)
-        try:
-            nextRev = 0
-            fetched = 0
-            logs = []
-            while fetched < limit:
-                flimit = min(fetchLimit, limit - fetched)
-                if fetched == 0:
-                    revstart = start
-                else:
-                    revstart = pysvn.Revision(
-                        pysvn.opt_revision_kind.number, nextRev)
-                allLogs = self.client.log(
-                    self.fname, revision_start=revstart,
-                    discover_changed_paths=True, limit=flimit + 1,
-                    strict_node_history=self.stopCheckBox.isChecked())
-                if len(allLogs) <= flimit or self._clientCancelCallback():
-                    logs.extend(allLogs)
-                    break
-                else:
-                    logs.extend(allLogs[:-1])
-                    nextRev = allLogs[-1]["revision"].number
-                    fetched += fetchLimit
-            locker.unlock()
-            
-            for log in logs:
-                author = log["author"]
-                message = log["message"]
-                self.__generateLogItem(
-                    author, log["date"], message,
-                    log["revision"], log['changed_paths'])
-                dt = dateFromTime_t(log["date"])
-                if (
-                    not self.__maxDate.isValid() and
-                    not self.__minDate.isValid()
-                ):
-                    self.__maxDate = dt
-                    self.__minDate = dt
-                else:
-                    if self.__maxDate < dt:
+        with E5OverrideCursor():
+            locker = QMutexLocker(self.vcs.vcsExecutionMutex)
+            cwd = os.getcwd()
+            os.chdir(self.dname)
+            try:
+                nextRev = 0
+                fetched = 0
+                logs = []
+                while fetched < limit:
+                    flimit = min(fetchLimit, limit - fetched)
+                    if fetched == 0:
+                        revstart = start
+                    else:
+                        revstart = pysvn.Revision(
+                            pysvn.opt_revision_kind.number, nextRev)
+                    allLogs = self.client.log(
+                        self.fname, revision_start=revstart,
+                        discover_changed_paths=True, limit=flimit + 1,
+                        strict_node_history=self.stopCheckBox.isChecked())
+                    if len(allLogs) <= flimit or self._clientCancelCallback():
+                        logs.extend(allLogs)
+                        break
+                    else:
+                        logs.extend(allLogs[:-1])
+                        nextRev = allLogs[-1]["revision"].number
+                        fetched += fetchLimit
+                locker.unlock()
+                
+                for log in logs:
+                    author = log["author"]
+                    message = log["message"]
+                    self.__generateLogItem(
+                        author, log["date"], message,
+                        log["revision"], log['changed_paths'])
+                    dt = dateFromTime_t(log["date"])
+                    if (
+                        not self.__maxDate.isValid() and
+                        not self.__minDate.isValid()
+                    ):
                         self.__maxDate = dt
-                    if self.__minDate > dt:
                         self.__minDate = dt
-            if len(logs) < limit and not self.cancelled:
-                self.nextButton.setEnabled(False)
-                self.limitSpinBox.setEnabled(False)
-            self.__filterLogsEnabled = False
-            self.fromDate.setMinimumDate(self.__minDate)
-            self.fromDate.setMaximumDate(self.__maxDate)
-            self.fromDate.setDate(self.__minDate)
-            self.toDate.setMinimumDate(self.__minDate)
-            self.toDate.setMaximumDate(self.__maxDate)
-            self.toDate.setDate(self.__maxDate)
-            self.__filterLogsEnabled = True
-            
-            self.__resizeColumnsLog()
-            self.__resortLog()
-            self.__filterLogs()
-        except pysvn.ClientError as e:
-            locker.unlock()
-            self.__showError(e.args[0])
-        os.chdir(cwd)
+                    else:
+                        if self.__maxDate < dt:
+                            self.__maxDate = dt
+                        if self.__minDate > dt:
+                            self.__minDate = dt
+                if len(logs) < limit and not self.cancelled:
+                    self.nextButton.setEnabled(False)
+                    self.limitSpinBox.setEnabled(False)
+                self.__filterLogsEnabled = False
+                self.fromDate.setMinimumDate(self.__minDate)
+                self.fromDate.setMaximumDate(self.__maxDate)
+                self.fromDate.setDate(self.__minDate)
+                self.toDate.setMinimumDate(self.__minDate)
+                self.toDate.setMaximumDate(self.__maxDate)
+                self.toDate.setDate(self.__maxDate)
+                self.__filterLogsEnabled = True
+                
+                self.__resizeColumnsLog()
+                self.__resortLog()
+                self.__filterLogs()
+            except pysvn.ClientError as e:
+                locker.unlock()
+                self.__showError(e.args[0])
+            os.chdir(cwd)
         self.__finish()
     
     def start(self, fn, isFile=False):
@@ -370,8 +368,6 @@
         """
         Private slot called when the user pressed the button.
         """
-        QApplication.restoreOverrideCursor()
-        
         self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True)
         self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(False)
         self.buttonBox.button(QDialogButtonBox.Close).setDefault(True)

eric ide

mercurial