aerc

Working clone of aerc-mail.org
git clone git://git.danielmoch.com/aerc.git
Log | Files | Refs | README | LICENSE

commit a0c2b1caf03d0ed8b89de8402fcc14b003969e2c
parent 87fa305848a893b1c85472ea394f24486bd478b6
Author: Drew DeVault <sir@cmpwn.com>
Date:   Sun, 20 Jan 2019 15:06:44 -0500

Implement the Container interface in lib/ui/

Diffstat:
Mlib/ui/borders.go | 4++++
Mlib/ui/grid.go | 8++++++++
Mlib/ui/interfaces.go | 9++-------
Mlib/ui/stack.go | 4++++
Mlib/ui/tab.go | 8++++++++
5 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/lib/ui/borders.go b/lib/ui/borders.go @@ -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) diff --git a/lib/ui/grid.go b/lib/ui/grid.go @@ -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 { diff --git a/lib/ui/interfaces.go b/lib/ui/interfaces.go @@ -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 } diff --git a/lib/ui/stack.go b/lib/ui/stack.go @@ -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) } diff --git a/lib/ui/tab.go b/lib/ui/tab.go @@ -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()