package views

import (
	"git.milar.in/milarin/gui"
)

// GrowView is a gui.Wrapper which always demands all available space in the given axes
type GrowView struct {
	gui.WrapperTmpl

	growH, growV bool
}

var _ gui.View = &GrowView{}

func NewGrowView(view gui.View, growH, growV bool) *GrowView {
	g := &GrowView{growH: growH, growV: growV}
	g.SetView(view)
	return g
}

func (v *GrowView) Layout(ctx gui.AppContext) (prefWidth, prefHeight int) {
	w, h := v.WrapperTmpl.Layout(ctx)
	return iff(v.growH, -1, w), iff(v.growV, -1, h)
}
