Explorar o código

Fix mouse highlights not handled (#75)

ayntgl %!s(int64=4) %!d(string=hai) anos
pai
achega
97ac92301c
Modificáronse 1 ficheiros con 31 adicións e 17 borrados
  1. 31 17
      ui.go

+ 31 - 17
ui.go

@@ -249,20 +249,17 @@ func onMessagesViewInputCapture(e *tcell.EventKey) *tcell.EventKey {
 
 		if len(messagesView.GetHighlights()) == 0 {
 			selectedMessage = len(ms)
-			messagesView.
-				Highlight(ms[selectedMessage-1].ID).
-				ScrollToHighlight()
 		} else {
 			selectedMessage--
 			if selectedMessage < 1 {
 				selectedMessage = 1
 			}
-
-			messagesView.
-				Highlight(ms[selectedMessage-1].ID).
-				ScrollToHighlight()
 		}
 
+		messagesView.
+			Highlight(ms[selectedMessage-1].ID).
+			ScrollToHighlight()
+
 		return nil
 	case conf.Keybindings.MessagesView.SelectNext:
 		ms := selectedChannel.Messages
@@ -272,20 +269,17 @@ func onMessagesViewInputCapture(e *tcell.EventKey) *tcell.EventKey {
 
 		if len(messagesView.GetHighlights()) == 0 {
 			selectedMessage = len(ms)
-			messagesView.
-				Highlight(ms[selectedMessage-1].ID).
-				ScrollToHighlight()
 		} else {
 			selectedMessage++
 			if selectedMessage > len(ms) {
 				selectedMessage = len(ms)
 			}
-
-			messagesView.
-				Highlight(ms[selectedMessage-1].ID).
-				ScrollToHighlight()
 		}
 
+		messagesView.
+			Highlight(ms[selectedMessage-1].ID).
+			ScrollToHighlight()
+
 		return nil
 	case conf.Keybindings.MessagesView.SelectFirst:
 		ms := selectedChannel.Messages
@@ -313,9 +307,18 @@ func onMessagesViewInputCapture(e *tcell.EventKey) *tcell.EventKey {
 			return nil
 		}
 
-		messageInputField.SetTitle(
-			"Replying to " + ms[selectedMessage-1].Author.Username,
-		)
+		hs := messagesView.GetHighlights()
+		if len(hs) == 0 {
+			return nil
+		}
+
+		for i, m := range ms {
+			if m.ID == hs[0] {
+				selectedMessage = i + 1
+			}
+		}
+
+		messageInputField.SetTitle("Replying to " + ms[selectedMessage-1].Author.Username)
 		app.SetFocus(messageInputField)
 	case conf.Keybindings.MessagesView.ReplyMention:
 		ms := selectedChannel.Messages
@@ -323,6 +326,17 @@ func onMessagesViewInputCapture(e *tcell.EventKey) *tcell.EventKey {
 			return nil
 		}
 
+		hs := messagesView.GetHighlights()
+		if len(hs) == 0 {
+			return nil
+		}
+
+		for i, m := range ms {
+			if m.ID == hs[0] {
+				selectedMessage = i + 1
+			}
+		}
+
 		messageInputField.SetTitle("[@] Replying to " + ms[selectedMessage-1].Author.Username)
 		app.SetFocus(messageInputField)
 	}