From be1533ad7fa5e27a156aa996bac7b9fc4fb6026f Mon Sep 17 00:00:00 2001 From: Gabriel Carneiro Date: Mon, 25 Mar 2024 19:16:13 -0300 Subject: [PATCH] block signal handlers in toggle button when updating state (#406) * blockg signal handlers in toggle button when updating state * fix linting --------- Co-authored-by: Erik Reider <35975961+ErikReider@users.noreply.github.com> --- src/controlCenter/widgets/shared/toggleButton.vala | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/controlCenter/widgets/shared/toggleButton.vala b/src/controlCenter/widgets/shared/toggleButton.vala index 1d55b99..98b201b 100644 --- a/src/controlCenter/widgets/shared/toggleButton.vala +++ b/src/controlCenter/widgets/shared/toggleButton.vala @@ -3,6 +3,7 @@ namespace SwayNotificationCenter.Widgets { private string command; private string update_command; + private ulong handler_id; public ToggleButton (string label, string command, string update_command, bool active) { this.command = command; @@ -13,7 +14,7 @@ namespace SwayNotificationCenter.Widgets { this.active = true; } - this.toggled.connect (on_toggle); + this.handler_id = this.toggled.connect (on_toggle); } private async void on_toggle () { @@ -31,11 +32,13 @@ namespace SwayNotificationCenter.Widgets { // remove trailing whitespaces Regex regex = new Regex ("\\s+$"); string res = regex.replace (msg, msg.length, 0, ""); + GLib.SignalHandler.block (this, this.handler_id); if (res.up () == "TRUE") { this.active = true; } else { this.active = false; } + GLib.SignalHandler.unblock (this, this.handler_id); } catch (RegexError e) { stderr.printf ("RegexError: %s\n", e.message); }