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>
This commit is contained in:
Gabriel Carneiro 2024-03-25 19:16:13 -03:00 committed by GitHub
parent 7e503e6885
commit be1533ad7f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 4 additions and 1 deletions

View File

@ -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);
}