diff options
| -rw-r--r-- | go/client/game.go | 9 | ||||
| -rw-r--r-- | go/ui/collection.go | 10 |
2 files changed, 16 insertions, 3 deletions
diff --git a/go/client/game.go b/go/client/game.go index 19677ea5..5718371b 100644 --- a/go/client/game.go +++ b/go/client/game.go @@ -96,7 +96,7 @@ func newGame(app *app, gameState game.State) *Game { g.resetButton = ui.NewRoundSimpleButton( 10, - g.Height/2+DEFAULT_BUTTON_HEIGHT/2, + g.Height/2, DEFAULT_BUTTON_HEIGHT, "X", func(*ui.SimpleButton) { @@ -395,10 +395,13 @@ func (g *Game) declareAction(a game.Action) { g.stateBar.ForceRedraw() } -// show a widget by adding it to the collection +// show ensures a widget is visible by adding it to the collection or moving it to the last position. func (g *Game) show(w ui.Widget) { - if g.FindWidget(w) == -1 { + idx := g.FindWidget(w) + if idx == -1 { g.AddWidget(w) + } else { + g.MoveIdxToLast(idx) } } diff --git a/go/ui/collection.go b/go/ui/collection.go index f60f5f3b..d4c2cd69 100644 --- a/go/ui/collection.go +++ b/go/ui/collection.go @@ -50,6 +50,16 @@ func (c *Collection) AddWidget(w Widget) { if slices.Contains(c.widgets, w) { log.Panicf("Double insertion of %v", w) } + log.Println("add", w) + c.widgets = append(c.widgets, w) +} + +// MoveIdxToLast shifts the widget at index idx to the last position. +func (c *Collection) MoveIdxToLast(idx int) { + w := c.widgets[idx] + after := c.widgets[idx+1:] + c.widgets = c.widgets[:idx] + c.widgets = append(c.widgets, after...) c.widgets = append(c.widgets, w) } |
