From 5a90eb07762c3539b2f162e1858d88c6b8cb520f Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 15 Apr 2025 21:48:42 +0200 Subject: [PATCH] Fix double toggle on repeat call of `on_button_release_event` This can happen with touch screens.. leading to `set_active (!get_active ());` being called twice, and effective NOOP. --- libs/widgets/ardour_button.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libs/widgets/ardour_button.cc b/libs/widgets/ardour_button.cc index cbb80ceebb..822f6b2ebd 100644 --- a/libs/widgets/ardour_button.cc +++ b/libs/widgets/ardour_button.cc @@ -1082,10 +1082,10 @@ ArdourButton::on_button_release_event (GdkEventButton *ev) return true; } - _grabbed = false; CairoWidget::set_dirty (); - if (ev->button == 1 && _hovering) { + if (ev->button == 1 && _hovering && _grabbed) { + _grabbed = false; if (_act_on_release && _auto_toggle && !_action) { set_active (!get_active ()); } @@ -1098,6 +1098,8 @@ ArdourButton::on_button_release_event (GdkEventButton *ev) } } + _grabbed = false; + return _fallthrough_to_parent ? false : true; }