From 4b01822c262b11ae95d9b7691a4370886ba22351 Mon Sep 17 00:00:00 2001 From: Imran Iqbal Date: Mon, 8 May 2023 13:11:11 -0400 Subject: [PATCH] Guard for nil when closing windows Fixes: https://github.com/fyne-io/fyne/issues/3870 --- internal/driver/glfw/window_desktop.go | 4 +++- internal/driver/glfw/window_test.go | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/internal/driver/glfw/window_desktop.go b/internal/driver/glfw/window_desktop.go index de128c26aa..563a93319b 100644 --- a/internal/driver/glfw/window_desktop.go +++ b/internal/driver/glfw/window_desktop.go @@ -318,7 +318,9 @@ func (w *window) refresh(_ *glfw.Window) { } func (w *window) closed(viewport *glfw.Window) { - viewport.SetShouldClose(false) // reset the closed flag until we check the veto in processClosed + if viewport != nil { + viewport.SetShouldClose(false) // reset the closed flag until we check the veto in processClosed + } w.processClosed() } diff --git a/internal/driver/glfw/window_test.go b/internal/driver/glfw/window_test.go index 7f7d567c90..5829933845 100644 --- a/internal/driver/glfw/window_test.go +++ b/internal/driver/glfw/window_test.go @@ -1720,6 +1720,12 @@ func TestWindow_CloseInterception(t *testing.T) { }) } +func TestWindow_ClosedBeforeShow(t *testing.T) { + w := createWindow("Test").(*window) + // viewport will be nil if window is closed before show + assert.NotPanics(t, func() { w.closed(nil) }) +} + func TestWindow_SetContent_Twice(t *testing.T) { w := createWindow("Test").(*window)