diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-02 22:21:22 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-02 22:21:22 +0300 |
| commit | 842ce63eda42a5dfa1599bf69b5ea22b332a954d (patch) | |
| tree | dd95130457d654ee2bc363b345c8d7f0d501379a /internal/gui/app.go | |
| parent | 373a10660bdd1faf27d22073380e5e897870ab12 (diff) | |
task 004: replace time.Sleep goroutine synchronization with proper primitives
audio_player.go: use time.AfterFunc instead of goroutine+sleep for the
100ms auto-play delay — no goroutine is blocked waiting.
app.go (setupUI, setupTooltips): replace goroutine+sleep with time.AfterFunc
for both 500ms tooltip initialization delays.
navigation.go: replace fixed 500ms sleep in the delete-cleanup goroutine with
a ticker+select loop that polls hasActiveOperations(). The goroutine now
proceeds as soon as all in-flight operations for the deleted word finish
(or after a 5-second safety timeout), rather than waiting a fixed interval
that may be too short or too long.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'internal/gui/app.go')
| -rw-r--r-- | internal/gui/app.go | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/internal/gui/app.go b/internal/gui/app.go index 666c763..4f8311e 100644 --- a/internal/gui/app.go +++ b/internal/gui/app.go @@ -555,9 +555,9 @@ func (a *Application) setupUI() { // Now that tooltip layer is created, set all tooltips a.setupTooltips() - // Set tooltips for export, archive and help buttons with a delay - go func() { - time.Sleep(500 * time.Millisecond) + // Set tooltips for export, archive and help buttons after the tooltip layer + // has had time to initialize. AfterFunc avoids blocking a goroutine. + time.AfterFunc(500*time.Millisecond, func() { fyne.Do(func() { if exportButton != nil { exportButton.SetToolTip("Export to Anki (x)") @@ -569,7 +569,7 @@ func (a *Application) setupUI() { helpButton.SetToolTip("Show hotkeys (?)") } }) - }() + }) a.window.SetOnClosed(func() { // Stop file check ticker @@ -1962,12 +1962,10 @@ func (a *Application) clearUI() { a.setActionButtonsEnabled(false) } -// setupTooltips sets up all tooltips after the tooltip layer has been created +// setupTooltips sets up all tooltips after the tooltip layer has been created. +// AfterFunc fires after the tooltip layer is initialized without blocking a goroutine. func (a *Application) setupTooltips() { - // Use a goroutine with a delay to ensure the tooltip layer is fully initialized - go func() { - time.Sleep(500 * time.Millisecond) - + time.AfterFunc(500*time.Millisecond, func() { fyne.Do(func() { // Navigation button tooltips if a.submitButton != nil { @@ -2014,7 +2012,7 @@ func (a *Application) setupTooltips() { a.audioPlayer.stopButton.SetToolTip("Stop audio") } }) - }() + }) } // processNextInQueue processes the next word in the queue |
