From a082427cb65885c56a5b5524277522729cd5f1c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tilo=20Pr=C3=BCtz?= Date: Mon, 14 Sep 2020 07:51:11 +0200 Subject: [PATCH] manage FocusManagers per overlay --- internal/driver/glfw/canvas.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/internal/driver/glfw/canvas.go b/internal/driver/glfw/canvas.go index 62a8f5df6d..2ee31232b3 100644 --- a/internal/driver/glfw/canvas.go +++ b/internal/driver/glfw/canvas.go @@ -520,8 +520,9 @@ func (c *glCanvas) walkTrees( type overlayStack struct { internal.OverlayStack - onChange func() - renderCaches []*renderCacheTree + focusManagers []*app.FocusManager + onChange func() + renderCaches []*renderCacheTree } func (o *overlayStack) Add(overlay fyne.CanvasObject) { @@ -530,12 +531,15 @@ func (o *overlayStack) Add(overlay fyne.CanvasObject) { } o.OverlayStack.Add(overlay) o.renderCaches = append(o.renderCaches, &renderCacheTree{root: &renderCacheNode{obj: overlay}}) + o.focusManagers = append(o.focusManagers, app.NewFocusManager(overlay)) o.onChange() } func (o *overlayStack) Remove(overlay fyne.CanvasObject) { o.OverlayStack.Remove(overlay) - o.renderCaches = o.renderCaches[:len(o.List())] + overlayCount := len(o.List()) + o.renderCaches = o.renderCaches[:overlayCount] + o.focusManagers = o.focusManagers[:overlayCount] o.onChange() }