From 1f549a3c3a0511fc62df5339f71a3fcc62067c04 Mon Sep 17 00:00:00 2001 From: wyzula-jan Date: Mon, 26 Jan 2026 12:31:23 +0100 Subject: [PATCH] wip shiboken check --- bec_widgets/utils/bec_connector.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/bec_widgets/utils/bec_connector.py b/bec_widgets/utils/bec_connector.py index 8d5ee607..8c225fe1 100644 --- a/bec_widgets/utils/bec_connector.py +++ b/bec_widgets/utils/bec_connector.py @@ -8,6 +8,7 @@ import uuid from datetime import datetime from typing import TYPE_CHECKING, Optional +import shiboken6 as shb from bec_lib.logger import bec_logger from bec_lib.utils.import_utils import lazy_import_from from pydantic import BaseModel, Field, field_validator @@ -230,17 +231,20 @@ class BECConnector: - If there's a nearest BECConnector parent, only compare with children of that parent. - If parent is None (i.e., top-level object), compare with all other top-level BECConnectors. """ + if not shb.isValid(self): + return + QApplication.sendPostedEvents() parent_bec = WidgetHierarchy._get_becwidget_ancestor(self) if parent_bec: # We have a parent => only compare with siblings under that parent - siblings = parent_bec.findChildren(BECConnector) + siblings = [sib for sib in parent_bec.findChildren(BECConnector) if shb.isValid(sib)] else: # No parent => treat all top-level BECConnectors as siblings # Use RPCRegister to avoid QApplication.allWidgets() during event processing. connections = self.rpc_register.list_all_connections().values() - all_bec = [w for w in connections if isinstance(w, BECConnector)] + all_bec = [w for w in connections if isinstance(w, BECConnector) and shb.isValid(w)] siblings = [w for w in all_bec if WidgetHierarchy._get_becwidget_ancestor(w) is None] # Collect used names among siblings