diff options
author | Junegunn Choi <junegunn.c@gmail.com> | 2023-10-10 18:58:22 +0900 |
---|---|---|
committer | Junegunn Choi <junegunn.c@gmail.com> | 2023-10-11 09:42:12 +0900 |
commit | 391aa148451b6c0a5e17ec2453f35afaba046f1f (patch) | |
tree | d993649a5856240e37d9ecaec3612f241e5224c8 /src/terminal.go | |
parent | a0d61b4c373f6b977314f7ebe53f6236798151e9 (diff) |
Add mouse events for --bind
Close #3473
Diffstat (limited to 'src/terminal.go')
-rw-r--r-- | src/terminal.go | 46 |
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: |