diff --git a/.github/workflows/test-with-edm.yml b/.github/workflows/test-with-edm.yml index 73731c05a..6f5da199c 100644 --- a/.github/workflows/test-with-edm.yml +++ b/.github/workflows/test-with-edm.yml @@ -18,6 +18,7 @@ jobs: matrix: os: [ubuntu-latest, macos-latest, windows-latest] toolkit: ['wx', 'pyqt5', 'pyside2', 'pyside6'] + timeout-minutes: 20 # should be plenty, it's usually < 5 runs-on: ${{ matrix.os }} env: # Set root directory, mainly for Windows, so that the EDM Python diff --git a/pyface/ui/qt4/action/action_item.py b/pyface/ui/qt4/action/action_item.py index 7193accf7..60dcb92f7 100644 --- a/pyface/ui/qt4/action/action_item.py +++ b/pyface/ui/qt4/action/action_item.py @@ -376,7 +376,12 @@ def _qt4_on_destroyed(self, control=None): """ if self.control is not None: # Remove the cycle since we're no longer needed. - if hasattr(self.control, "_tool_instance"): + try: + has_instance = hasattr(self.control, "_tool_instance") + # fixes mayavi #1180: PyQt5 "wrapped C/C++ object ... has been deleted" + except RuntimeError: + has_instance = False + if has_instance: del self.control._tool_instance self.control = None