]> git.lizzy.rs Git - micro.git/blobdiff - internal/action/tab.go
Fix v2 import path for go mod
[micro.git] / internal / action / tab.go
index ac49edb957e43885e4842accc7a9da7a5465b2f2..9d5d82be1d3b863060d073d40d8aa154c63b1353 100644 (file)
@@ -1,11 +1,11 @@
 package action
 
 import (
-       "github.com/zyedidia/micro/internal/buffer"
-       "github.com/zyedidia/micro/internal/config"
-       "github.com/zyedidia/micro/internal/display"
-       "github.com/zyedidia/micro/internal/screen"
-       "github.com/zyedidia/micro/internal/views"
+       "github.com/zyedidia/micro/v2/internal/buffer"
+       "github.com/zyedidia/micro/v2/internal/config"
+       "github.com/zyedidia/micro/v2/internal/display"
+       "github.com/zyedidia/micro/v2/internal/screen"
+       "github.com/zyedidia/micro/v2/internal/views"
        "github.com/zyedidia/tcell"
 )
 
@@ -104,6 +104,13 @@ func (t *TabList) HandleEvent(event tcell.Event) {
                mx, my := e.Position()
                switch e.Buttons() {
                case tcell.Button1:
+                       if my == t.Y && mx == 0 {
+                               t.Scroll(-4)
+                               return
+                       } else if my == t.Y && mx == t.Width-1 {
+                               t.Scroll(4)
+                               return
+                       }
                        if len(t.List) > 1 {
                                ind := t.LocFromVisual(buffer.Loc{mx, my})
                                if ind != -1 {
@@ -159,6 +166,8 @@ type Tab struct {
        active int
 
        resizing *views.Node // node currently being resized
+       // captures whether the mouse is released
+       release bool
 }
 
 // NewTabFromBuffer creates a new tab from the given buffer
@@ -196,6 +205,8 @@ func (t *Tab) HandleEvent(event tcell.Event) {
                mx, my := e.Position()
                switch e.Buttons() {
                case tcell.Button1:
+                       wasReleased := t.release
+                       t.release = false
                        if t.resizing != nil {
                                var size int
                                if t.resizing.Kind == views.STVert {
@@ -208,22 +219,25 @@ func (t *Tab) HandleEvent(event tcell.Event) {
                                return
                        }
 
-                       resizeID := t.GetMouseSplitID(buffer.Loc{mx, my})
-                       if resizeID != 0 {
-                               t.resizing = t.GetNode(uint64(resizeID))
-                               return
-                       }
+                       if wasReleased {
+                               resizeID := t.GetMouseSplitID(buffer.Loc{mx, my})
+                               if resizeID != 0 {
+                                       t.resizing = t.GetNode(uint64(resizeID))
+                                       return
+                               }
 
-                       for i, p := range t.Panes {
-                               v := p.GetView()
-                               inpane := mx >= v.X && mx < v.X+v.Width && my >= v.Y && my < v.Y+v.Height
-                               if inpane {
-                                       t.SetActive(i)
-                                       break
+                               for i, p := range t.Panes {
+                                       v := p.GetView()
+                                       inpane := mx >= v.X && mx < v.X+v.Width && my >= v.Y && my < v.Y+v.Height
+                                       if inpane {
+                                               t.SetActive(i)
+                                               break
+                                       }
                                }
                        }
                case tcell.ButtonNone:
                        t.resizing = nil
+                       t.release = true
                default:
                        for _, p := range t.Panes {
                                v := p.GetView()