From 7ebe99508d2144355d199c940822f9d8761de21b Mon Sep 17 00:00:00 2001 From: Hue Date: Sat, 20 Jun 2026 21:31:34 +0200 Subject: [PATCH] =?UTF-8?q?panel=C2=A0:=20mixer=C2=A0:=20fix=20popup=20ope?= =?UTF-8?q?ning=20when=20doing=20mute=5Faction?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Instead of activating the control’s button, which was opening the widget popup, manually set the state and prevent poping up. Fixes #488 Co-authored by froloffw7 --- src/panel/widgets/mixer/mixer.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/panel/widgets/mixer/mixer.cpp b/src/panel/widgets/mixer/mixer.cpp index cab96d0c..d73e2e3a 100644 --- a/src/panel/widgets/mixer/mixer.cpp +++ b/src/panel/widgets/mixer/mixer.cpp @@ -98,7 +98,15 @@ void WayfireMixer::reload_config() return; // no quick_target means we have nothing to change by clicking } - quick_target->button.set_active(!quick_target->button.get_active()); + guint32 id = wp_proxy_get_bound_id(WP_PROXY(quick_target->object)); + bool mute = !quick_target->button.get_active(); + + // pretend the mixer control is the source of the change to prevent a popup + objects_to_controls[quick_target->object]->ignore = true; + // still set visual state + objects_to_controls[quick_target->object]->set_btn_status_no_callbk(mute); + quick_target->set_btn_status_no_callbk(mute); + WpCommon::get().set_mute(id, mute); }; if (str_wp_left_click_action.value() == "show_mixer")