From 599b9f6d468ffb31665d0d97f4ae09ba651d306a Mon Sep 17 00:00:00 2001 From: Tim Culverhouse Date: Wed, 14 Sep 2022 15:33:11 -0500 Subject: [PATCH] terminal: improve mouse support Improve terminal mouse support by forwarding mouse events to the terminal widget. Clicking and dragging are supported. Signed-off-by: Tim Culverhouse Acked-by: Robin Jarry --- CHANGELOG.md | 1 + widgets/aerc.go | 3 --- widgets/terminal.go | 20 +++++++++++--------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2002c71..ca99feb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). be sent. The output will be stored until aerc is shut down. This behaviour can be disabled by setting `outgoing-cred-cmd-cache=false` in `accounts.conf`. +- Mouse support for embedded editors when `mouse-enabled=true`. ## [0.12.0](https://git.sr.ht/~rjarry/aerc/refs/0.12.0) - 2022-09-01 diff --git a/widgets/aerc.go b/widgets/aerc.go index e210916..7ba1ea4 100644 --- a/widgets/aerc.go +++ b/widgets/aerc.go @@ -348,9 +348,6 @@ func (aerc *Aerc) Event(event tcell.Event) bool { return false } case *tcell.EventMouse: - if event.Buttons() == tcell.ButtonNone { - return false - } x, y := event.Position() aerc.grid.MouseEvent(x, y, event) return true diff --git a/widgets/terminal.go b/widgets/terminal.go index c8b97d3..f0d9dc9 100644 --- a/widgets/terminal.go +++ b/widgets/terminal.go @@ -140,16 +140,18 @@ func (term *Terminal) draw() { } func (term *Terminal) MouseEvent(localX int, localY int, event tcell.Event) { - if event, ok := event.(*tcell.EventMouse); ok { - if term.OnEvent != nil { - if term.OnEvent(event) { - return - } - } - if term.closed { - return - } + ev, ok := event.(*tcell.EventMouse) + if !ok { + return } + if term.OnEvent != nil { + term.OnEvent(ev) + } + if term.closed { + return + } + e := tcell.NewEventMouse(localX, localY, ev.Buttons(), ev.Modifiers()) + term.vterm.HandleEvent(e) } func (term *Terminal) Focus(focus bool) {