summaryrefslogtreecommitdiffstats
path: root/pkg/gui/view_helpers.go
diff options
context:
space:
mode:
authorJesse Duffield <jessedduffield@gmail.com>2020-02-23 21:53:30 +1100
committerJesse Duffield <jessedduffield@gmail.com>2020-02-24 22:18:04 +1100
commit46be280c921994ba783b8c53232d118f0547ad14 (patch)
tree0f2e637414a54e2dd034081f0fce888346e31655 /pkg/gui/view_helpers.go
parent2a5763a77190a579ae3cb57926a0d907964fcccb (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.go37
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())
}