From b2c6ee28e53b8ae5617a1ac8c88d769fd973c6dd Mon Sep 17 00:00:00 2001 From: melancholytron Date: Wed, 10 Sep 2025 09:14:43 -0500 Subject: [PATCH] Fix delay timing buttons checked state in GUI sync MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add proper setChecked(True/False) calls for delay timing buttons - Ensure correct timing button shows as selected when loading preset - Clear previous timing button selection before setting new one - Fix timing button styling to properly reflect enabled/disabled and selected states Now delay timing buttons should correctly show which timing is selected on startup. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- gui/arpeggiator_controls.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/gui/arpeggiator_controls.py b/gui/arpeggiator_controls.py index 5bff8b3..8484cd1 100644 --- a/gui/arpeggiator_controls.py +++ b/gui/arpeggiator_controls.py @@ -1260,23 +1260,25 @@ class ArpeggiatorControls(QWidget): # Update delay timing buttons if hasattr(self, 'delay_timing_buttons') and hasattr(self.arpeggiator, 'delay_timing'): - # Clear current delay timing styling + # Clear current delay timing - uncheck old button if hasattr(self, 'current_delay_timing') and self.current_delay_timing in self.delay_timing_buttons: - self.apply_button_style(self.delay_timing_buttons[self.current_delay_timing], 10, "disabled") + self.delay_timing_buttons[self.current_delay_timing].setChecked(False) + # Set new active delay timing self.current_delay_timing = self.arpeggiator.delay_timing if self.current_delay_timing in self.delay_timing_buttons: - if self.delay_enabled: - self.apply_button_style(self.delay_timing_buttons[self.current_delay_timing], 10, "purple") - # Enable and style all timing buttons - for btn in self.delay_timing_buttons.values(): + # Check the correct timing button + self.delay_timing_buttons[self.current_delay_timing].setChecked(True) + + # Style all timing buttons based on delay enabled state + for timing, btn in self.delay_timing_buttons.items(): + if self.delay_enabled: btn.setEnabled(True) - if not btn.isChecked(): + if timing == self.current_delay_timing: + self.apply_button_style(btn, 10, "purple") + else: self.apply_button_style(btn, 10, "normal") - else: - self.apply_button_style(self.delay_timing_buttons[self.current_delay_timing], 10, "disabled") - # Disable all timing buttons - for btn in self.delay_timing_buttons.values(): + else: btn.setEnabled(False) self.apply_button_style(btn, 10, "disabled")