From 909211f484db3c5f178a6f0a69635beae687a68e Mon Sep 17 00:00:00 2001 From: wakonig_k Date: Thu, 2 Jul 2026 11:26:29 +0200 Subject: [PATCH] fix: update Ctrl+C handling in BecConsole to support shared terminal sessions --- .../views/developer_view/developer_widget.py | 3 +-- .../widgets/editors/bec_console/bec_console.py | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/bec_widgets/applications/views/developer_view/developer_widget.py b/bec_widgets/applications/views/developer_view/developer_widget.py index f7cdbcbf..4def0502 100644 --- a/bec_widgets/applications/views/developer_view/developer_widget.py +++ b/bec_widgets/applications/views/developer_view/developer_widget.py @@ -332,8 +332,7 @@ class DeveloperWidget(DockAreaWidget): """Stop the execution of the currently running script""" if not self.current_script_id: return - if self.console.term is not None: - self.console.term.send_ctrl_c() + self.console.send_ctrl_c(regardless_of_ownership=True) @property def current_script_id(self): diff --git a/bec_widgets/widgets/editors/bec_console/bec_console.py b/bec_widgets/widgets/editors/bec_console/bec_console.py index 2046ba1c..c57ca736 100644 --- a/bec_widgets/widgets/editors/bec_console/bec_console.py +++ b/bec_widgets/widgets/editors/bec_console/bec_console.py @@ -543,6 +543,20 @@ class BecConsole(BECWidget, QWidget): if term: term.write(data, send_return) + def send_ctrl_c(self, regardless_of_ownership: bool = False): + """ + Send Ctrl+C to the console + + Args: + regardless_of_ownership (bool): Whether to send to the shared terminal session even + when this console does not currently own the visible terminal widget. + """ + term = self.term + if term is None and regardless_of_ownership: + term = _bec_console_registry.get_terminal(self.terminal_id) + if term: + term.send_ctrl_c() + @property def zoom_level(self) -> int: return _bec_console_registry.zoom_level(self.terminal_id)