mirror of
https://github.com/denizsafak/abogen.git
synced 2026-07-18 21:50:28 +02:00
Enabled mousewheel
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user