make waveform seekbar non-interactive when stopped / playing radio

This commit is contained in:
Drew Weymouth
2025-08-01 17:55:36 -07:00
parent 8e3ec5e11b
commit 43b8b60fb0
2 changed files with 11 additions and 2 deletions
+3
View File
@@ -121,6 +121,7 @@ func NewPlayerControls(useWaveformSeekbar bool) *PlayerControls {
pc.slider = NewTrackPosSlider()
pc.slider.Disable()
pc.waveform = NewWaveformSeekbar()
pc.waveform.Disable()
if useWaveformSeekbar {
pc.slider.Hidden = true
} else {
@@ -206,8 +207,10 @@ func (pc *PlayerControls) UpdatePlayTime(curTime, totalTime float64) {
}
if totalTime > 0 {
pc.slider.Enable()
pc.waveform.Enable()
} else {
pc.slider.Disable()
pc.waveform.Disable()
}
if !pc.slider.IsDragging() {
ct := util.SecondsToMMSS(curTime)
+8 -2
View File
@@ -16,7 +16,7 @@ import (
)
type WaveformSeekbar struct {
widget.BaseWidget
widget.DisableableWidget
OnSeeked func(float64)
@@ -59,6 +59,9 @@ func (w *WaveformSeekbar) Refresh() {
var _ desktop.Hoverable = (*WaveformSeekbar)(nil)
func (w *WaveformSeekbar) MouseIn(e *desktop.MouseEvent) {
if w.Disabled() {
return
}
prm, fg := w.getThemeColors()
w.recolorCursor(prm, fg, e.Position.X)
w.cursor.Resize(fyne.NewSize(1, w.Size().Height-4))
@@ -67,6 +70,9 @@ func (w *WaveformSeekbar) MouseIn(e *desktop.MouseEvent) {
}
func (w *WaveformSeekbar) MouseMoved(e *desktop.MouseEvent) {
if w.Disabled() {
return
}
prm, fg := w.getThemeColors()
w.recolorCursor(prm, fg, e.Position.X)
w.cursor.Move(fyne.NewPos(e.Position.X, 2))
@@ -79,7 +85,7 @@ func (w *WaveformSeekbar) MouseOut() {
var _ fyne.Tappable = (*WaveformSeekbar)(nil)
func (w *WaveformSeekbar) Tapped(e *fyne.PointEvent) {
if w.OnSeeked != nil {
if !w.Disabled() && w.OnSeeked != nil {
w.OnSeeked(float64(e.Position.X / w.Size().Width))
}
}