diff options
author | Jesse Duffield <jessedduffield@gmail.com> | 2020-02-23 21:53:30 +1100 |
---|---|---|
committer | Jesse Duffield <jessedduffield@gmail.com> | 2020-02-24 22:18:04 +1100 |
commit | 46be280c921994ba783b8c53232d118f0547ad14 (patch) | |
tree | 0f2e637414a54e2dd034081f0fce888346e31655 /pkg/gui/view_helpers.go | |
parent | 2a5763a77190a579ae3cb57926a0d907964fcccb (diff) |
support searching in side panels
For now we're just doing side panels, because it will take more work
to support this in the various main panel contexts
Diffstat (limited to 'pkg/gui/view_helpers.go')
-rw-r--r-- | pkg/gui/view_helpers.go | 37 |
1 files changed, 11 insertions, 26 deletions
diff --git a/pkg/gui/view_helpers.go b/pkg/gui/view_helpers.go index bf25dbdbb..5452f1754 100644 --- a/pkg/gui/view_helpers.go +++ b/pkg/gui/view_helpers.go @@ -135,6 +135,8 @@ func (gui *Gui) newLineFocused(g *gocui.Gui, v *gocui.View) error { } v.Highlight = false return nil + case "search": + return nil default: panic(gui.Tr.SLocalize("NoViewMachingNewLineFocusedSwitchStatement")) } @@ -218,32 +220,7 @@ func (gui *Gui) resetOrigin(v *gocui.View) error { // if the cursor down past the last item, move it to the last line func (gui *Gui) focusPoint(cx int, cy int, lineCount int, v *gocui.View) error { - if cy < 0 || cy > lineCount { - return nil - } - ox, oy := v.Origin() - _, height := v.Size() - - ly := height - 1 - if ly == -1 { - ly = 0 - } - - // if line is above origin, move origin and set cursor to zero - // if line is below origin + height, move origin and set cursor to max - // otherwise set cursor to value - origin - if ly > lineCount { - _ = v.SetCursor(cx, cy) - _ = v.SetOrigin(ox, 0) - } else if cy < oy { - _ = v.SetCursor(cx, 0) - _ = v.SetOrigin(ox, cy) - } else if cy > oy+ly { - _ = v.SetCursor(cx, ly) - _ = v.SetOrigin(ox, cy-ly) - } else { - _ = v.SetCursor(cx, cy-oy) - } + v.FocusPoint(cx, cy) return nil } @@ -268,6 +245,9 @@ func (gui *Gui) renderString(g *gocui.Gui, viewName, s string) error { if err := v.SetOrigin(0, 0); err != nil { return err } + if err := v.SetCursor(0, 0); err != nil { + return err + } return gui.setViewContent(gui.g, v, s) }) return nil @@ -333,6 +313,11 @@ func (gui *Gui) getMenuView() *gocui.View { return v } +func (gui *Gui) getSearchView() *gocui.View { + v, _ := gui.g.View("search") + return v +} + func (gui *Gui) trimmedContent(v *gocui.View) string { return strings.TrimSpace(v.Buffer()) } |