diff --git a/plugins/Marketplace/PackageList.py b/plugins/Marketplace/PackageList.py index 7eb98b3233..80588a0c12 100644 --- a/plugins/Marketplace/PackageList.py +++ b/plugins/Marketplace/PackageList.py @@ -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""" diff --git a/plugins/Marketplace/PackageModel.py b/plugins/Marketplace/PackageModel.py index 917a54ede6..334b54e6f5 100644 --- a/plugins/Marketplace/PackageModel.py +++ b/plugins/Marketplace/PackageModel.py @@ -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