summaryrefslogtreecommitdiff
path: root/client/ui.go
diff options
context:
space:
mode:
Diffstat (limited to 'client/ui.go')
-rw-r--r--client/ui.go43
1 files changed, 37 insertions, 6 deletions
diff --git a/client/ui.go b/client/ui.go
index 6282bc6..8d55519 100644
--- a/client/ui.go
+++ b/client/ui.go
@@ -104,12 +104,43 @@ func (a *application) onInput(ev tui.Event) {
prompt.Input().Write("")
}
- case keys.Up | keys.Alt:
- index := a.channelList.traverse(-1)
- a.channelScroll.Set(index - 5)
- case keys.Down | keys.Alt:
- index := a.channelList.traverse(1)
- a.channelScroll.Set(index - 5)
+ case keys.Up | keys.Alt, keys.Down | keys.Alt:
+ var dir int
+ if ev.Key == keys.Up | keys.Alt {
+ dir = -1
+ } else {
+ dir = 1
+ }
+ var loc channelLocation
+ switch w := a.currentWindow.(type) {
+ case channelLocation:
+ loc = w
+ }
+ switch {
+ case a.channelList.contains(loc):
+ index := a.channelList.traverse(dir)
+ if index >= 0 && index < a.channelList.Len() {
+ a.channelScroll.Set(index - 5)
+ break
+ }
+ fallthrough
+ case a.dmList.contains(loc):
+ index := a.dmList.traverse(dir)
+ if index >= 0 && index < a.dmList.Len() {
+ a.dmScroll.Set(index - 5)
+ } else {
+ index = a.channelList.traverse(dir)
+ a.channelScroll.Set(index - 5)
+ }
+ default:
+ if ev.Key == keys.Down | keys.Alt {
+ a.channelList.traverse(0)
+ a.channelScroll.Set(0)
+ } else {
+ a.dmList.traverse(0)
+ a.dmScroll.Set(0)
+ }
+ }
case 'p' | keys.Ctrl:
a.traverseHistory(-1)