diff options
author | Drew DeVault <sir@cmpwn.com> | 2018-01-10 22:54:55 -0500 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2018-01-10 22:54:55 -0500 |
commit | 55e84533022c1f9bf9fd9e2cd2db930394b590b8 (patch) | |
tree | 513ee239f641aa5154427776efa18fda752e642d /ui/render.go | |
parent | 77a0f68758905faa74407499ff92c90929e27989 (diff) | |
download | aerc-55e84533022c1f9bf9fd9e2cd2db930394b590b8.tar.gz |
Improve invalidation logic
Diffstat (limited to 'ui/render.go')
-rw-r--r-- | ui/render.go | 80 |
1 files changed, 0 insertions, 80 deletions
diff --git a/ui/render.go b/ui/render.go deleted file mode 100644 index 4fedc2cc..00000000 --- a/ui/render.go +++ /dev/null @@ -1,80 +0,0 @@ -package ui - -import ( - tb "github.com/nsf/termbox-go" - - "git.sr.ht/~sircmpwn/aerc2/config" -) - -func Initialize(conf *config.AercConfig) (*UIState, error) { - state := UIState{ - Config: conf, - InvalidPanes: InvalidateAll, - - tbEvents: make(chan tb.Event, 10), - } - if err := tb.Init(); err != nil { - return nil, err - } - tb.SetInputMode(tb.InputEsc | tb.InputMouse) - tb.SetOutputMode(tb.Output256) - go (func() { - for !state.Exit { - state.tbEvents <- tb.PollEvent() - } - })() - return &state, nil -} - -func (state *UIState) Close() { - tb.Close() -} - -func (state *UIState) AddTab(tab AercTab) { - state.Tabs = append(state.Tabs, tab) -} - -func (state *UIState) Invalidate(what uint) { - state.InvalidPanes |= what -} - -func (state *UIState) calcGeometries() { - width, height := tb.Size() - // TODO: more - state.Panes.TabView = Geometry{ - Row: 0, - Col: 0, - Width: width, - Height: height, - } -} - -func (state *UIState) Tick() bool { - select { - case event := <-state.tbEvents: - switch event.Type { - case tb.EventKey: - if event.Key == tb.KeyEsc { - state.Exit = true - } - case tb.EventResize: - state.Invalidate(InvalidateAll) - } - default: - // no-op - break - } - if state.InvalidPanes != 0 { - if state.InvalidPanes&InvalidateAll == InvalidateAll { - tb.Clear(tb.ColorDefault, tb.ColorDefault) - state.calcGeometries() - } - if state.InvalidPanes&InvalidateTabs != 0 { - tab := state.Tabs[state.SelectedTab] - tab.Render(state.Panes.TabView) - } - tb.Flush() - state.InvalidPanes = 0 - } - return true -} |