From 124fa9e2e7b9c7501a32cb528f28a52354de3840 Mon Sep 17 00:00:00 2001 From: Dmitry Maluka Date: Thu, 3 Nov 2022 00:14:26 +0100 Subject: [PATCH] Fix up double release event after drag If we press mouse, drag and then release, the release event is generated twice, since both mouse press and mouse drag events have been saved in mousePressed map. To fix that, ensure that we only store mouse press events in it. --- internal/action/bufpane.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/internal/action/bufpane.go b/internal/action/bufpane.go index c6d527a1..f40efa7e 100644 --- a/internal/action/bufpane.go +++ b/internal/action/bufpane.go @@ -443,14 +443,15 @@ func (h *BufPane) HandleEvent(event tcell.Event) { mod: metaToAlt(e.Modifiers()), state: MousePress, } - if len(h.mousePressed) > 0 { - me.state = MouseDrag - } + isDrag := len(h.mousePressed) > 0 if e.Buttons() & ^(tcell.WheelUp|tcell.WheelDown|tcell.WheelLeft|tcell.WheelRight) != tcell.ButtonNone { h.mousePressed[me] = true } + if isDrag { + me.state = MouseDrag + } h.DoMouseEvent(me, e) } else { // Mouse event with no click - mouse was just released.