--- a/eric6/Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py Fri Oct 09 17:19:29 2020 +0200 +++ b/eric6/Plugins/VcsPlugins/vcsPySvn/SvnDiffDialog.py Sat Oct 10 12:20:51 2020 +0200 @@ -14,11 +14,12 @@ import pysvn from PyQt5.QtCore import QMutexLocker, QFileInfo, QDateTime, Qt, pyqtSlot -from PyQt5.QtGui import QCursor, QTextCursor -from PyQt5.QtWidgets import QWidget, QApplication, QDialogButtonBox +from PyQt5.QtGui import QTextCursor +from PyQt5.QtWidgets import QWidget, QDialogButtonBox from E5Gui.E5Application import e5App from E5Gui import E5MessageBox, E5FileDialog +from E5Gui.E5OverrideCursor import E5OverrideCursor from .SvnDialogMixin import SvnDialogMixin from .Ui_SvnDiffDialog import Ui_SvnDiffDialog @@ -138,8 +139,6 @@ self._reset() self.errorGroup.hide() - QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) - QApplication.processEvents() self.filename = fn self.contents.clear() @@ -200,67 +199,68 @@ dname, fname = self.vcs.splitPath(fn) fnames = [fname] - locker = QMutexLocker(self.vcs.vcsExecutionMutex) - cwd = os.getcwd() - os.chdir(dname) - try: - dname = e5App().getObject('Project').getRelativePath(dname) - if dname: - dname += "/" - for name in fnames: - self.__showError( - self.tr("Processing file '{0}'...\n").format(name)) - if urls is not None: - url1 = "{0}/{1}{2}".format(urls[0], dname, name) - url2 = "{0}/{1}{2}".format(urls[1], dname, name) - if summary: - diff_summary = self.client.diff_summarize( - url1, revision1=rev1, - url_or_path2=url2, revision2=rev2, - recurse=recurse) - diff_list = [] - for diff_sum in diff_summary: - path = diff_sum['path'] - diff_list.append("{0} {1}".format( - self.__getDiffSummaryKind( - diff_sum['summarize_kind']), - path)) - diffText = os.linesep.join(diff_list) + with E5OverrideCursor(): + locker = QMutexLocker(self.vcs.vcsExecutionMutex) + cwd = os.getcwd() + os.chdir(dname) + try: + dname = e5App().getObject('Project').getRelativePath(dname) + if dname: + dname += "/" + for name in fnames: + self.__showError( + self.tr("Processing file '{0}'...\n").format(name)) + if urls is not None: + url1 = "{0}/{1}{2}".format(urls[0], dname, name) + url2 = "{0}/{1}{2}".format(urls[1], dname, name) + if summary: + diff_summary = self.client.diff_summarize( + url1, revision1=rev1, + url_or_path2=url2, revision2=rev2, + recurse=recurse) + diff_list = [] + for diff_sum in diff_summary: + path = diff_sum['path'] + diff_list.append("{0} {1}".format( + self.__getDiffSummaryKind( + diff_sum['summarize_kind']), + path)) + diffText = os.linesep.join(diff_list) + else: + diffText = self.client.diff( + tmpdir, + url1, revision1=rev1, + url_or_path2=url2, revision2=rev2, + recurse=recurse) else: - diffText = self.client.diff( - tmpdir, - url1, revision1=rev1, - url_or_path2=url2, revision2=rev2, - recurse=recurse) - else: - if pegRev is not None: - diffText = self.client.diff_peg( - tmpdir, name, - peg_revision=self.__getVersionArg(pegRev), - revision_start=rev1, revision_end=rev2, - recurse=recurse) - else: - diffText = self.client.diff( - tmpdir, name, - revision1=rev1, revision2=rev2, recurse=recurse) - counter = 0 - for line in diffText.splitlines(): - if line.startswith("--- ") or line.startswith("+++ "): - self.__processFileLine(line) - - self.__appendText("{0}{1}".format(line, os.linesep)) - counter += 1 - if counter == 30: - # check for cancel every 30 lines - counter = 0 - if self._clientCancelCallback(): - break - if self._clientCancelCallback(): - break - except pysvn.ClientError as e: - self.__showError(e.args[0]) - locker.unlock() - os.chdir(cwd) + if pegRev is not None: + diffText = self.client.diff_peg( + tmpdir, name, + peg_revision=self.__getVersionArg(pegRev), + revision_start=rev1, revision_end=rev2, + recurse=recurse) + else: + diffText = self.client.diff( + tmpdir, name, + revision1=rev1, revision2=rev2, recurse=recurse) + counter = 0 + for line in diffText.splitlines(): + if line.startswith("--- ") or line.startswith("+++ "): + self.__processFileLine(line) + + self.__appendText("{0}{1}".format(line, os.linesep)) + counter += 1 + if counter == 30: + # check for cancel every 30 lines + counter = 0 + if self._clientCancelCallback(): + break + if self._clientCancelCallback(): + break + except pysvn.ClientError as e: + self.__showError(e.args[0]) + locker.unlock() + os.chdir(cwd) self.__finish() if self.paras == 0: @@ -309,8 +309,6 @@ """ Private slot called when the user pressed the button. """ - QApplication.restoreOverrideCursor() - self.refreshButton.setEnabled(True) self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(False) self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True)