Enabled mousewheel

This commit is contained in:
Deniz Şafak
2025-04-29 15:36:57 +03:00
parent 7c55a6f6fa
commit 28813b8975
+21
View File
@@ -128,6 +128,10 @@ class VoiceFormulaDialog(QDialog):
self.scroll_area = QScrollArea() self.scroll_area = QScrollArea()
self.scroll_area.setWidgetResizable(True) self.scroll_area.setWidgetResizable(True)
self.scroll_area.setFixedSize(1000, 400) # Keep scroll area height within 500 self.scroll_area.setFixedSize(1000, 400) # Keep scroll area height within 500
self.scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
self.scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.scroll_area.viewport().installEventFilter(self) # Install event filter for wheel events
self.voice_list_widget = QWidget() self.voice_list_widget = QWidget()
self.voice_list_layout = QHBoxLayout() self.voice_list_layout = QHBoxLayout()
self.voice_list_widget.setLayout(self.voice_list_layout) self.voice_list_widget.setLayout(self.voice_list_layout)
@@ -187,3 +191,20 @@ class VoiceFormulaDialog(QDialog):
mixer.get_voice_weight() for mixer in self.voice_mixers mixer.get_voice_weight() for mixer in self.voice_mixers
] ]
return [voice for voice in selected_voices if voice] # Filter out None return [voice for voice in selected_voices if voice] # Filter out None
def eventFilter(self, source, event):
"""Event filter to handle mouse wheel events for horizontal scrolling."""
if (source is self.scroll_area.viewport() and event.type() == event.Wheel):
# Check if the event is over a slider
# Check if mouse is over an enabled slider
if any(mixer.slider.underMouse() and mixer.slider.isEnabled() for mixer in self.voice_mixers):
return False
# Convert vertical wheel movement to horizontal scrolling
horiz_bar = self.scroll_area.horizontalScrollBar()
if event.angleDelta().y() > 0:
horiz_bar.setValue(horiz_bar.value() - 120) # Scroll left
else:
horiz_bar.setValue(horiz_bar.value() + 120) # Scroll right
return True
return super().eventFilter(source, event)