Implement the Container interface in lib/ui/
This commit is contained in:
parent
87fa305848
commit
a0c2b1caf0
5 changed files with 26 additions and 7 deletions
|
@ -30,6 +30,10 @@ func (bordered *Bordered) contentInvalidated(d Drawable) {
|
|||
bordered.Invalidate()
|
||||
}
|
||||
|
||||
func (bordered *Bordered) Children() []Drawable {
|
||||
return []Drawable{bordered.content}
|
||||
}
|
||||
|
||||
func (bordered *Bordered) Invalidate() {
|
||||
if bordered.onInvalidate != nil {
|
||||
bordered.onInvalidate(bordered)
|
||||
|
|
|
@ -71,6 +71,14 @@ func (grid *Grid) Columns(spec []GridSpec) *Grid {
|
|||
return grid
|
||||
}
|
||||
|
||||
func (grid *Grid) Children() []Drawable {
|
||||
children := make([]Drawable, len(grid.cells))
|
||||
for i, cell := range grid.cells {
|
||||
children[i] = cell.Content
|
||||
}
|
||||
return children
|
||||
}
|
||||
|
||||
func (grid *Grid) Draw(ctx *Context) {
|
||||
invalid := grid.invalid
|
||||
if invalid {
|
||||
|
|
|
@ -31,12 +31,7 @@ type DrawableInteractive interface {
|
|||
// A drawable which contains other drawables
|
||||
type Container interface {
|
||||
Drawable
|
||||
// A list of all drawables which are children of this one (do not recurse
|
||||
// into your grandchildren).
|
||||
// Return all of the drawables which are children of this one (do not
|
||||
// recurse into your grandchildren).
|
||||
Children() []Drawable
|
||||
// Return the "focused" child, or none of no preference. Does not actually
|
||||
// have to be Interactive. If there is a preferred child, input events will
|
||||
// be directed to it. If there's no preference, events will be delivered to
|
||||
// all children.
|
||||
InteractiveChild() Drawable
|
||||
}
|
||||
|
|
|
@ -15,6 +15,10 @@ func NewStack() *Stack {
|
|||
return &Stack{}
|
||||
}
|
||||
|
||||
func (stack *Stack) Children() []Drawable {
|
||||
return stack.children
|
||||
}
|
||||
|
||||
func (stack *Stack) OnInvalidate(onInvalidate func(d Drawable)) {
|
||||
stack.onInvalidate = append(stack.onInvalidate, onInvalidate)
|
||||
}
|
||||
|
|
|
@ -107,6 +107,14 @@ func (strip *TabStrip) OnInvalidate(onInvalidate func(d Drawable)) {
|
|||
strip.onInvalidateStrip = onInvalidate
|
||||
}
|
||||
|
||||
func (content *TabContent) Children() []Drawable {
|
||||
children := make([]Drawable, len(content.Tabs))
|
||||
for i, tab := range content.Tabs {
|
||||
children[i] = tab.Content
|
||||
}
|
||||
return children
|
||||
}
|
||||
|
||||
func (content *TabContent) Draw(ctx *Context) {
|
||||
if content.Selected >= len(content.Tabs) {
|
||||
width := ctx.Width()
|
||||
|
|
Loading…
Reference in a new issue