From 2041e12eba7a271edd7d2eb856f9a30bb3c00fad Mon Sep 17 00:00:00 2001 From: Zachary Yedidia Date: Mon, 5 Sep 2016 08:36:30 -0400 Subject: [PATCH] Fix some issues with mouse selection copying --- cmd/micro/cursor.go | 14 +++++++++----- cmd/micro/view.go | 4 ++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/cmd/micro/cursor.go b/cmd/micro/cursor.go index 76c9d5b6..c6eb92ae 100644 --- a/cmd/micro/cursor.go +++ b/cmd/micro/cursor.go @@ -31,22 +31,26 @@ func (c *Cursor) Goto(b Cursor) { // ResetSelection resets the user's selection func (c *Cursor) ResetSelection() { - c.SetSelectionStart(c.buf.Start()) - c.SetSelectionEnd(c.buf.Start()) + c.CurSelection[0] = c.buf.Start() + c.CurSelection[1] = c.buf.Start() } // SetSelectionStart sets the start of the selection func (c *Cursor) SetSelectionStart(pos Loc) { c.CurSelection[0] = pos // Copy to primary clipboard for linux - clipboard.WriteAll(c.GetSelection(), "primary") + if c.HasSelection() { + clipboard.WriteAll(c.GetSelection(), "primary") + } } // SetSelectionEnd sets the end of the selection func (c *Cursor) SetSelectionEnd(pos Loc) { c.CurSelection[1] = pos // Copy to primary clipboard for linux - clipboard.WriteAll(c.GetSelection(), "primary") + if c.HasSelection() { + clipboard.WriteAll(c.GetSelection(), "primary") + } } // HasSelection returns whether or not the user has selected anything @@ -59,7 +63,7 @@ func (c *Cursor) DeleteSelection() { if c.CurSelection[0].GreaterThan(c.CurSelection[1]) { c.buf.Remove(c.CurSelection[1], c.CurSelection[0]) c.Loc = c.CurSelection[1] - } else if c.GetSelection() == "" { + } else if !c.HasSelection() { return } else { c.buf.Remove(c.CurSelection[0], c.CurSelection[1]) diff --git a/cmd/micro/view.go b/cmd/micro/view.go index 996ac8bd..d1d3c810 100644 --- a/cmd/micro/view.go +++ b/cmd/micro/view.go @@ -414,8 +414,8 @@ func (v *View) HandleEvent(event tcell.Event) { v.lastClickTime = time.Now() v.Cursor.OrigSelection[0] = v.Cursor.Loc - v.Cursor.SetSelectionStart(v.Cursor.Loc) - v.Cursor.SetSelectionEnd(v.Cursor.Loc) + v.Cursor.CurSelection[0] = v.Cursor.Loc + v.Cursor.CurSelection[1] = v.Cursor.Loc } v.mouseReleased = false } else if !v.mouseReleased {