From 65e04c2fc494497a49021a3d06bc8a80eb0f8257 Mon Sep 17 00:00:00 2001 From: aclist <92275929+aclist@users.noreply.github.com> Date: Wed, 11 Nov 2026 07:50:38 +0900 Subject: [PATCH] fix: multiple signals being stacked --- dzgui/views/pages/options.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/dzgui/views/pages/options.py b/dzgui/views/pages/options.py index 533fa67..92c7e1c 100644 --- a/dzgui/views/pages/options.py +++ b/dzgui/views/pages/options.py @@ -230,10 +230,19 @@ class ToggleField(Gtk.Box): self.pack_start(self.radio1, expand=False, fill=False, padding=0) self.pack_start(self.radio2, expand=False, fill=False, padding=0) + self.signal_id: int | None = None + + def disconnect_signal(self) -> None: + if self.signal_id is not None: + self.radio1.disconnect(self.signal_id) + def set_suboption_active(self, state: bool) -> None: # NOTE: defer connection of signal until after state is set self.radio2.set_active(state) - self.radio1.connect("toggled", self._on_radio_toggled, self.context) + self.disconnect_signal() + self.signal_id = self.radio1.connect( + "toggled", self._on_radio_toggled, self.context + ) def _on_radio_toggled(self, button: Gtk.RadioButton, context: Preferences) -> None: self.controller.toggle_config(context)