aboutsummaryrefslogtreecommitdiffstats
path: root/widgets
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2019-05-12 11:21:28 -0400
committerDrew DeVault <sir@cmpwn.com>2019-05-12 11:21:28 -0400
commitf37508a53980f38c530780650338797e81fe1e3c (patch)
tree17425d8d9426a4e8a51116cc299bca7be5baab4c /widgets
parent2a4dd5cb87179d8ffc00bad2552880f9bd50b75f (diff)
downloadaerc-f37508a53980f38c530780650338797e81fe1e3c.tar.gz
Implement :{next,prev}-field in compose view
Diffstat (limited to 'widgets')
-rw-r--r--widgets/compose.go17
-rw-r--r--widgets/terminal.go3
2 files changed, 19 insertions, 1 deletions
diff --git a/widgets/compose.go b/widgets/compose.go
index 10d14f72..f07e3ee1 100644
--- a/widgets/compose.go
+++ b/widgets/compose.go
@@ -67,7 +67,7 @@ func NewComposer() *Composer {
grid: grid,
editor: term,
// You have to backtab to get to "From", since you usually don't edit it
- focused: 3,
+ focused: 1,
focusable: []ui.DrawableInteractive{
from,
to,
@@ -99,6 +99,21 @@ func (c *Composer) Focus(focus bool) {
c.focusable[c.focused].Focus(focus)
}
+func (c *Composer) PrevField() {
+ c.focusable[c.focused].Focus(false)
+ c.focused--
+ if c.focused == -1 {
+ c.focused = len(c.focusable) - 1
+ }
+ c.focusable[c.focused].Focus(true)
+}
+
+func (c *Composer) NextField() {
+ c.focusable[c.focused].Focus(false)
+ c.focused = (c.focused + 1) % len(c.focusable)
+ c.focusable[c.focused].Focus(true)
+}
+
func newHeaderEditor(name string, value string) *headerEditor {
return &headerEditor{
input: ui.NewTextInput(value),
diff --git a/widgets/terminal.go b/widgets/terminal.go
index 92736d5b..ee99b601 100644
--- a/widgets/terminal.go
+++ b/widgets/terminal.go
@@ -273,6 +273,8 @@ func (term *Terminal) Draw(ctx *ui.Context) {
if ctx.Width() != cols || ctx.Height() != rows {
pty.Setsize(term.pty, &winsize)
term.vterm.SetSize(ctx.Height(), ctx.Width())
+ rect := vterm.NewRect(0, ctx.Width(), 0, ctx.Height())
+ term.damage = append(term.damage, *rect)
return
}
}
@@ -333,6 +335,7 @@ func (term *Terminal) Focus(focus bool) {
state := term.vterm.ObtainState()
row, col := state.GetCursorPos()
term.ctx.SetCursor(col, row)
+ term.Invalidate()
}
}
}