diff --git a/vendor/github.com/jesseduffield/gocui/gui.go b/vendor/github.com/jesseduffield/gocui/gui.go index 39db52886..79165d8de 100644 --- a/vendor/github.com/jesseduffield/gocui/gui.go +++ b/vendor/github.com/jesseduffield/gocui/gui.go @@ -248,6 +248,9 @@ func (g *Gui) SetView(name string, x0, y0, x1, y1 int, overlaps byte) (*View, er // SetViewBeneath sets a view stacked beneath another view func (g *Gui) SetViewBeneath(name string, aboveViewName string, height int) (*View, error) { + g.Mutexes.ViewsMutex.Lock() + defer g.Mutexes.ViewsMutex.Unlock() + aboveView, err := g.View(aboveViewName) if err != nil { return nil, err @@ -315,7 +318,11 @@ func (g *Gui) ViewByPosition(x, y int) (*View, error) { // traverse views in reverse order checking top views first for i := len(g.views); i > 0; i-- { v := g.views[i-1] - if x > v.x0 && x < v.x1 && y > v.y0 && y < v.y1 { + frameOffset := 0 + if v.Frame { + frameOffset = 1 + } + if x > v.x0-frameOffset && x < v.x1+frameOffset && y > v.y0-frameOffset && y < v.y1+frameOffset { return v, nil } } @@ -325,6 +332,9 @@ func (g *Gui) ViewByPosition(x, y int) (*View, error) { // ViewPosition returns the coordinates of the view with the given name, or // error ErrUnknownView if a view with that name does not exist. func (g *Gui) ViewPosition(name string) (x0, y0, x1, y1 int, err error) { + g.Mutexes.ViewsMutex.Lock() + defer g.Mutexes.ViewsMutex.Unlock() + for _, v := range g.views { if v.name == name { return v.x0, v.y0, v.x1, v.y1, nil @@ -335,6 +345,9 @@ func (g *Gui) ViewPosition(name string) (x0, y0, x1, y1 int, err error) { // DeleteView deletes a view by name. func (g *Gui) DeleteView(name string) error { + g.Mutexes.ViewsMutex.Lock() + defer g.Mutexes.ViewsMutex.Unlock() + for i, v := range g.views { if v.name == name { g.views = append(g.views[:i], g.views[i+1:]...) diff --git a/vendor/github.com/jesseduffield/gocui/tcell_driver.go b/vendor/github.com/jesseduffield/gocui/tcell_driver.go index 46a77a029..2f992e838 100644 --- a/vendor/github.com/jesseduffield/gocui/tcell_driver.go +++ b/vendor/github.com/jesseduffield/gocui/tcell_driver.go @@ -211,6 +211,8 @@ func pollEvent() GocuiEvent { } switch dragState { + case NOT_DRAGGING: + return GocuiEvent{Type: eventNone} // if we haven't released the left mouse button and we've moved the cursor then we're dragging case MAYBE_DRAGGING: if x != lastX || y != lastY {