Skip to content

Commit

Permalink
manage FocusManagers per overlay
Browse files Browse the repository at this point in the history
  • Loading branch information
toaster committed Sep 16, 2020
1 parent 4ff0519 commit a082427
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions internal/driver/glfw/canvas.go
Expand Up @@ -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) {
Expand All @@ -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()
}

Expand Down

0 comments on commit a082427

Please sign in to comment.