Make sure Signal are disconnected when PackageModel is deleted

Contributes to CURA-8587
This commit is contained in:
Jelle Spijker 2021-12-16 17:00:29 +01:00
parent 23d6c2390f
commit ffa34ab5fe
No known key found for this signature in database
GPG key ID: 6662DC033BE6B99A
2 changed files with 10 additions and 1 deletions

View file

@ -55,6 +55,8 @@ class PackageList(ListModel):
def __del__(self) -> None:
""" When this object is deleted it will loop through all registered API requests and aborts them """
self.cleanUpAPIRequest()
self.isLoadingChanged.disconnect()
self.hasMoreChanged.disconnect()
def abortRequest(self, request_id: str) -> None:
"""Aborts a single request"""

View file

@ -79,10 +79,17 @@ class PackageModel(QObject):
self._package_manager.packageInstalled.connect(lambda pkg_id: self._packageInstalled(pkg_id))
self._package_manager.packageUninstalled.connect(lambda pkg_id: self._packageInstalled(pkg_id))
self._package_manager.packageInstallingFailed.connect(lambda pkg_id: self._packageInstalled(pkg_id))
self._package_manager.packagesWithUpdateChanged.connect(lambda: self.setCanUpdate(self._package_id in self._package_manager.packagesWithUpdate))
self._package_manager.packagesWithUpdateChanged.connect(self._processUpdatedPackages)
self._is_busy = False
@pyqtSlot()
def _processUpdatedPackages(self):
self.setCanUpdate(self._package_id in self._package_manager.packagesWithUpdate)
def __del__(self):
self._package_manager.packagesWithUpdateChanged.disconnect(self._processUpdatedPackages)
def __eq__(self, other: object) -> bool:
if isinstance(other, PackageModel):
return other == self