From d800fc4c54a6d77da153fd27319acae489251ffb Mon Sep 17 00:00:00 2001 From: Ken Sanislo Date: Fri, 15 May 2026 10:07:22 -0700 Subject: [PATCH] GraphicEQControl: only re-render the written slider on write completion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The partial-dict hardening in d632febf made set_value call control.set_value() for every band unconditionally. A per-slider write returns a single-key result dict, so completing one write re-rendered all 10 sliders from setting._value. Any slider the user had dragged but whose 0.5s debounce hadn't fired yet got reverted to its old value — and the subsequent debounce then read that reverted value and dropped the user's change. Restore the original behavior: only set sliders present in the result dict; for the rest, read stored.get() for the tooltip but leave the widget alone. Keeps the KeyError-safe .get() from d632febf. --- lib/solaar/ui/config_panel.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/solaar/ui/config_panel.py b/lib/solaar/ui/config_panel.py index 5e2198fa..5595d64d 100644 --- a/lib/solaar/ui/config_panel.py +++ b/lib/solaar/ui/config_panel.py @@ -611,9 +611,10 @@ class GraphicEQControl(MultipleControl): for vbox in self._items: item = vbox._setting_item v = value.get(int(item)) - if v is None: + if v is not None: + vbox.control.set_value(v) + else: v = stored.get(int(item), 0) - vbox.control.set_value(v) b += f"{str(item)}: ({str(v)}) " lbl_text = ngettext("%d value", "%d values", n) % n self._button.set_label(lbl_text)