diff options
Diffstat (limited to 'stack.go')
| -rw-r--r-- | stack.go | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -4,6 +4,7 @@ package ui import ( "fmt" + "sync" ) type orientation bool @@ -19,6 +20,7 @@ const ( // Any extra space at the end of a Stack is left blank. // Some controls may be marked as "stretchy": when the Window they are in changes size, stretchy controls resize to take up the remaining space after non-stretchy controls are laid out. If multiple controls are marked stretchy, they are alloted equal distribution of the remaining space. type Stack struct { + lock sync.Mutex created bool orientation orientation controls []Control @@ -49,6 +51,9 @@ func NewVerticalStack(controls ...Control) *Stack { // SetStretchy marks a control in a Stack as stretchy. This cannot be called once the Window containing the Stack has been created. // It panics if index is out of range. func (s *Stack) SetStretchy(index int) { + s.lock.Lock() + defer s.lock.Unlock() + if s.created { panic("call to Stack.SetStretchy() after Stack has been created") } @@ -59,6 +64,9 @@ func (s *Stack) SetStretchy(index int) { } func (s *Stack) make(window *sysData) error { + s.lock.Lock() + defer s.lock.Unlock() + for i, c := range s.controls { err := c.make(window) if err != nil { |
