summaryrefslogtreecommitdiffstats
path: root/src/terminal.go
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2023-10-10 18:58:22 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2023-10-11 09:42:12 +0900
commit391aa148451b6c0a5e17ec2453f35afaba046f1f (patch)
treed993649a5856240e37d9ecaec3612f241e5224c8 /src/terminal.go
parenta0d61b4c373f6b977314f7ebe53f6236798151e9 (diff)
Add mouse events for --bind
Close #3473
Diffstat (limited to 'src/terminal.go')
-rw-r--r--src/terminal.go46
1 files changed, 35 insertions, 11 deletions
diff --git a/src/terminal.go b/src/terminal.go
index 07525de3..56e472ce 100644
--- a/src/terminal.go
+++ b/src/terminal.go
@@ -525,6 +525,16 @@ func defaultKeymap() map[tui.Event][]*action {
add(tui.Mouse, actMouse)
add(tui.LeftClick, actIgnore)
add(tui.RightClick, actToggle)
+ add(tui.SLeftClick, actToggle)
+ add(tui.SRightClick, actToggle)
+
+ add(tui.ScrollUp, actUp)
+ add(tui.ScrollDown, actDown)
+ keymap[tui.SScrollUp.AsEvent()] = toActions(actToggle, actUp)
+ keymap[tui.SScrollDown.AsEvent()] = toActions(actToggle, actDown)
+
+ add(tui.PreviewScrollUp, actPreviewUp)
+ add(tui.PreviewScrollDown, actPreviewDown)
return keymap
}
@@ -3483,13 +3493,23 @@ func (t *Terminal) Loop() {
// Scrolling
if me.S != 0 {
if t.window.Enclose(my, mx) && t.merger.Length() > 0 {
- if t.multi > 0 && me.Mod {
- toggle()
+ evt := tui.ScrollUp
+ if me.Mod {
+ evt = tui.SScrollUp
}
- t.vmove(me.S, true)
- req(reqList)
+ if me.S < 0 {
+ evt = tui.ScrollDown
+ if me.Mod {
+ evt = tui.SScrollDown
+ }
+ }
+ return doActions(actionsFor(evt))
} else if t.hasPreviewWindow() && t.pwindow.Enclose(my, mx) {
- scrollPreviewBy(-me.S)
+ evt := tui.PreviewScrollUp
+ if me.S < 0 {
+ evt = tui.PreviewScrollDown
+ }
+ return doActions(actionsFor(evt))
}
break
}
@@ -3580,15 +3600,19 @@ func (t *Terminal) Loop() {
// Prompt
t.cx = mx + t.xoffset
} else if my >= min {
- // List
- if t.vset(t.offset+my-min) && t.multi > 0 && me.Mod {
- toggle()
- }
+ t.vset(t.offset + my - min)
req(reqList)
+ evt := tui.RightClick
+ if me.Mod {
+ evt = tui.SRightClick
+ }
if me.Left {
- return doActions(actionsFor(tui.LeftClick))
+ evt = tui.LeftClick
+ if me.Mod {
+ evt = tui.SLeftClick
+ }
}
- return doActions(actionsFor(tui.RightClick))
+ return doActions(actionsFor(evt))
}
}
case actReload, actReloadSync: