diff --git a/bec_widgets/widgets/services/beamline_states/beamline_state_pill.py b/bec_widgets/widgets/services/beamline_states/beamline_state_pill.py index 50a025f8..3c181186 100644 --- a/bec_widgets/widgets/services/beamline_states/beamline_state_pill.py +++ b/bec_widgets/widgets/services/beamline_states/beamline_state_pill.py @@ -248,6 +248,9 @@ class BeamlineStatePill(BECWidget, QWidget): self.set_state_name(state_name, title=title) def eventFilter(self, watched: object, event: QEvent) -> bool: # noqa: N802 + if not isinstance(event, QEvent): + return False + hover_widgets = set(self._hover_widgets()) draggable_widgets = { self._header, diff --git a/tests/unit_tests/test_beamline_state_pill.py b/tests/unit_tests/test_beamline_state_pill.py index 524b4f79..c5ce229d 100644 --- a/tests/unit_tests/test_beamline_state_pill.py +++ b/tests/unit_tests/test_beamline_state_pill.py @@ -3,6 +3,7 @@ import json import shiboken6 from bec_lib import messages from qtpy.QtCore import QCoreApplication, QEvent, Qt +from qtpy.QtGui import QStandardItem from qtpy.QtWidgets import QMessageBox, QSizePolicy from bec_widgets.utils.toolbars.toolbar import ModularToolBar @@ -129,6 +130,13 @@ def test_beamline_state_pill_uses_card_style_when_hovered(qtbot, mocked_client): assert widget._shadow.isEnabled() +def test_beamline_state_pill_event_filter_ignores_non_qevent(qtbot, mocked_client): + widget = BeamlineStatePill(state_name="limits", title="Limits", client=mocked_client) + qtbot.addWidget(widget) + + assert widget.eventFilter(widget._title_edit, QStandardItem("not an event")) is False + + def test_beamline_state_pill_drag_payload_modes(qtbot, mocked_client): widget = BeamlineStatePill(state_name="limits", title="Limits", client=mocked_client) qtbot.addWidget(widget)