Bladeren bron

feat(ui/chat): add messages list scroll keys (#690)

Ayyan 3 maanden geleden
bovenliggende
commit
28857a9fb7
3 gewijzigde bestanden met toevoegingen van 22 en 3 verwijderingen
  1. 5 0
      internal/config/config.toml
  2. 8 3
      internal/config/keys.go
  3. 9 0
      internal/ui/chat/messages_list.go

+ 5 - 0
internal/config/config.toml

@@ -69,6 +69,11 @@ select_previous = "Rune[k]"
 select_next = "Rune[j]"
 select_first = "Rune[g]"
 select_last = "Rune[G]"
+# Scroll the messages list without changing the selection.
+scroll_up = "Rune[K]"
+scroll_down = "Rune[J]"
+scroll_top = "Home"
+scroll_bottom = "End"
 # Select the message reference (reply) of the selected channel.
 select_reply = "Rune[s]"
 # Reply to the selected message.

+ 8 - 3
internal/config/keys.go

@@ -1,7 +1,7 @@
 package config
 
 type (
-	NavigationKeys struct {
+	SelectionKeys struct {
 		SelectPrevious string `toml:"select_previous"`
 		SelectNext     string `toml:"select_next"`
 		SelectFirst    string `toml:"select_first"`
@@ -26,7 +26,7 @@ type (
 	}
 
 	GuildsTreeKeys struct {
-		NavigationKeys
+		SelectionKeys
 		SelectCurrent string `toml:"select_current"`
 		YankID        string `toml:"yank_id"`
 
@@ -35,7 +35,12 @@ type (
 	}
 
 	MessagesListKeys struct {
-		NavigationKeys
+		SelectionKeys
+		ScrollUp     string `toml:"scroll_up"`
+		ScrollDown   string `toml:"scroll_down"`
+		ScrollTop    string `toml:"scroll_top"`
+		ScrollBottom string `toml:"scroll_bottom"`
+
 		SelectReply  string `toml:"select_reply"`
 		Reply        string `toml:"reply"`
 		ReplyMention string `toml:"reply_mention"`

+ 9 - 0
internal/ui/chat/messages_list.go

@@ -258,6 +258,15 @@ func (ml *messagesList) selectedMessage() (*discord.Message, error) {
 
 func (ml *messagesList) onInputCapture(event *tcell.EventKey) *tcell.EventKey {
 	switch event.Name() {
+	case ml.cfg.Keys.MessagesList.ScrollUp:
+		return tcell.NewEventKey(tcell.KeyUp, "", tcell.ModNone)
+	case ml.cfg.Keys.MessagesList.ScrollDown:
+		return tcell.NewEventKey(tcell.KeyDown, "", tcell.ModNone)
+	case ml.cfg.Keys.MessagesList.ScrollTop:
+		return tcell.NewEventKey(tcell.KeyHome, "", tcell.ModNone)
+	case ml.cfg.Keys.MessagesList.ScrollBottom:
+		return tcell.NewEventKey(tcell.KeyEnd, "", tcell.ModNone)
+
 	case ml.cfg.Keys.MessagesList.Cancel:
 		ml.selectedMessageID = 0
 		ml.Highlight()