From fa30f631ddb7fd67fd9434d16862c539ee6a5b2b Mon Sep 17 00:00:00 2001 From: Andy Williams Date: Sat, 20 Jun 2020 22:25:02 +0100 Subject: [PATCH] Fix position of a window that is re-shown Also we don't have to recreate the window either, waste of CPU Fixes #1116 --- internal/driver/glfw/window.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/internal/driver/glfw/window.go b/internal/driver/glfw/window.go index 4bde2f9d92..1355c7e8d3 100644 --- a/internal/driver/glfw/window.go +++ b/internal/driver/glfw/window.go @@ -328,6 +328,11 @@ func (w *window) Show() { } func (w *window) doShow() { + if w.view() != nil { + w.doShowAgain() + return + } + for !running() { time.Sleep(time.Millisecond * 10) } @@ -1174,6 +1179,25 @@ func (w *window) create() { }) } +func (w *window) doShowAgain() { + if w.viewport == nil { + return + } + + runOnMain(func() { + // show top canvas element + if w.canvas.Content() != nil { + w.canvas.Content().Show() + } + + w.viewport.SetPos(w.xpos, w.ypos) + w.viewport.Show() + w.viewLock.Lock() + w.visible = true + w.viewLock.Unlock() + }) +} + func (w *window) view() *glfw.Window { w.viewLock.RLock() defer w.viewLock.RUnlock()