summaryrefslogtreecommitdiffstats
path: root/pkg/gui/files_panel.go
diff options
context:
space:
mode:
authorJesse Duffield Duffield <jesseduffieldduffield@Jesses-MacBook-Pro-3.local>2019-02-25 22:11:35 +1100
committerJesse Duffield <jessedduffield@gmail.com>2019-03-02 17:49:30 +1100
commit8c0ea8f45fde1dfddd23198fcb06ae77468e3a3a (patch)
treeba923f1b86c26327ceec9f12de619265229bf642 /pkg/gui/files_panel.go
parentafbc028ad6f2b8a580f6b22d13f3313ba5c44cf6 (diff)
mouse support
Diffstat (limited to 'pkg/gui/files_panel.go')
-rw-r--r--pkg/gui/files_panel.go32
1 files changed, 32 insertions, 0 deletions
diff --git a/pkg/gui/files_panel.go b/pkg/gui/files_panel.go
index 4ed8ddb10..b1d1bcb5f 100644
--- a/pkg/gui/files_panel.go
+++ b/pkg/gui/files_panel.go
@@ -26,6 +26,30 @@ func (gui *Gui) getSelectedFile(g *gocui.Gui) (*commands.File, error) {
return gui.State.Files[selectedLine], nil
}
+func (gui *Gui) handleFilesFocus(g *gocui.Gui, v *gocui.View) error {
+ if gui.popupPanelFocused() {
+ return nil
+ }
+
+ cx, cy := v.Cursor()
+ _, oy := v.Origin()
+
+ prevSelectedLine := gui.State.Panels.Files.SelectedLine
+ newSelectedLine := cy - oy
+
+ if newSelectedLine > len(gui.State.Files)-1 || len(utils.Decolorise(gui.State.Files[newSelectedLine].DisplayString)) < cx {
+ return gui.handleFileSelect(gui.g, v, false)
+ }
+
+ gui.State.Panels.Files.SelectedLine = newSelectedLine
+
+ if prevSelectedLine == newSelectedLine && gui.currentViewName() == v.Name() {
+ return gui.handleFilePress(gui.g, v)
+ } else {
+ return gui.handleFileSelect(gui.g, v, true)
+ }
+}
+
func (gui *Gui) handleFileSelect(g *gocui.Gui, v *gocui.View, alreadySelected bool) error {
if _, err := gui.g.SetCurrentView(v.Name()); err != nil {
return err
@@ -87,6 +111,10 @@ func (gui *Gui) refreshFiles() error {
}
func (gui *Gui) handleFilesNextLine(g *gocui.Gui, v *gocui.View) error {
+ if gui.popupPanelFocused() {
+ return nil
+ }
+
panelState := gui.State.Panels.Files
gui.changeSelectedLine(&panelState.SelectedLine, len(gui.State.Files), false)
@@ -94,6 +122,10 @@ func (gui *Gui) handleFilesNextLine(g *gocui.Gui, v *gocui.View) error {
}
func (gui *Gui) handleFilesPrevLine(g *gocui.Gui, v *gocui.View) error {
+ if gui.popupPanelFocused() {
+ return nil
+ }
+
panelState := gui.State.Panels.Files
gui.changeSelectedLine(&panelState.SelectedLine, len(gui.State.Files), true)