diff --git a/data/binding/preference_test.go b/data/binding/preference_test.go index fe62701c4e..b6faea4934 100644 --- a/data/binding/preference_test.go +++ b/data/binding/preference_test.go @@ -5,6 +5,7 @@ import ( "testing" "time" + "fyne.io/fyne/v2" "fyne.io/fyne/v2/test" "github.com/stretchr/testify/assert" ) @@ -20,11 +21,12 @@ func TestBindPreference_DataRace(t *testing.T) { binds := make([]Int, n) for i := 0; i < n; i++ { wg.Add(1) - go func(index int) { + index := i + fyne.Do(func() { bind := BindPreferenceInt(key, p) binds[index] = bind wg.Done() - }(i) + }) } wg.Wait() diff --git a/internal/driver/glfw/canvas_test.go b/internal/driver/glfw/canvas_test.go index 1b49dc2851..59b3620184 100644 --- a/internal/driver/glfw/canvas_test.go +++ b/internal/driver/glfw/canvas_test.go @@ -487,9 +487,7 @@ func TestGlCanvas_ResizeWithPopUpOverlay(t *testing.T) { content := widget.NewLabel("Content") over := widget.NewPopUp(widget.NewLabel("Over"), w.Canvas()) w.SetContent(content) - runOnMain(func() { - over.Show() - }) + over.Show() ensureCanvasSize(t, w, fyne.NewSize(69, 36)) size := fyne.NewSize(200, 100) @@ -515,8 +513,8 @@ func TestGlCanvas_ResizeWithModalPopUpOverlay(t *testing.T) { popup := widget.NewModalPopUp(widget.NewLabel("PopUp"), w.Canvas()) popupBgSize := fyne.NewSize(975, 575) + popup.Show() runOnMain(func() { - popup.Show() popup.Resize(popupBgSize) }) ensureCanvasSize(t, w, fyne.NewSize(69, 36)) @@ -653,6 +651,14 @@ func (s *safeCanvas) setMenuOverlay(o fyne.CanvasObject) { }) } +func (s *safeCanvas) Overlays() (ret fyne.OverlayStack) { + runOnMain(func() { + ret = s.glCanvas.Overlays() + }) + + return ret +} + func (s *safeCanvas) Padded() (ret bool) { runOnMain(func() { ret = s.glCanvas.Padded() diff --git a/internal/driver/glfw/window_test.go b/internal/driver/glfw/window_test.go index 41b4f8d550..5e9fffff2f 100644 --- a/internal/driver/glfw/window_test.go +++ b/internal/driver/glfw/window_test.go @@ -1746,8 +1746,9 @@ func TestWindow_SetContent_Twice(t *testing.T) { } func TestWindow_SetFullScreen(t *testing.T) { + var w *window runOnMain(func() { // tests launch in a different context - w := d.CreateWindow("Full").(*window) + w = d.CreateWindow("Full").(*window) w.SetFullScreen(true) w.create() @@ -1756,6 +1757,10 @@ func TestWindow_SetFullScreen(t *testing.T) { assert.Zero(t, w.height) w.SetFullScreen(false) + }) + + time.Sleep(time.Second) // macOS fullscreen transition takes time + runOnMain(func() { // ensure we realised size now! assert.NotZero(t, w.width) assert.NotZero(t, w.height)