Right Arrow Key descends into directory (#48)
This commit is contained in:
parent
c4bb987ccf
commit
57f1448c5c
@ -73,6 +73,9 @@ func (view *FileTreeView) Setup(v *gocui.View, header *gocui.View) error {
|
|||||||
if err := view.gui.SetKeybinding(view.Name, gocui.KeyArrowLeft, gocui.ModNone, func(*gocui.Gui, *gocui.View) error { return view.CursorLeft() }); err != nil {
|
if err := view.gui.SetKeybinding(view.Name, gocui.KeyArrowLeft, gocui.ModNone, func(*gocui.Gui, *gocui.View) error { return view.CursorLeft() }); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
if err := view.gui.SetKeybinding(view.Name, gocui.KeyArrowRight, gocui.ModNone, func(*gocui.Gui, *gocui.View) error { return view.CursorRight() }); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
if err := view.gui.SetKeybinding(view.Name, gocui.KeySpace, gocui.ModNone, func(*gocui.Gui, *gocui.View) error { return view.toggleCollapse() }); err != nil {
|
if err := view.gui.SetKeybinding(view.Name, gocui.KeySpace, gocui.ModNone, func(*gocui.Gui, *gocui.View) error { return view.toggleCollapse() }); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@ -252,6 +255,34 @@ func (view *FileTreeView) CursorLeft() error {
|
|||||||
return view.Render()
|
return view.Render()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//CursorRight descends into directory expanding it if needed
|
||||||
|
func (view *FileTreeView) CursorRight() error {
|
||||||
|
node := view.getAbsPositionNode()
|
||||||
|
if node == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if !node.Data.FileInfo.TarHeader.FileInfo().IsDir() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if len(node.Children) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if node.Data.ViewInfo.Collapsed {
|
||||||
|
node.Data.ViewInfo.Collapsed = false
|
||||||
|
}
|
||||||
|
view.TreeIndex++
|
||||||
|
if view.TreeIndex > view.bufferIndexUpperBound {
|
||||||
|
view.bufferIndexUpperBound++
|
||||||
|
view.bufferIndexLowerBound++
|
||||||
|
}
|
||||||
|
view.bufferIndex++
|
||||||
|
if view.bufferIndex > view.height() {
|
||||||
|
view.bufferIndex = view.height()
|
||||||
|
}
|
||||||
|
view.Update()
|
||||||
|
return view.Render()
|
||||||
|
}
|
||||||
|
|
||||||
// getAbsPositionNode determines the selected screen cursor's location in the file tree, returning the selected FileNode.
|
// getAbsPositionNode determines the selected screen cursor's location in the file tree, returning the selected FileNode.
|
||||||
func (view *FileTreeView) getAbsPositionNode() (node *filetree.FileNode) {
|
func (view *FileTreeView) getAbsPositionNode() (node *filetree.FileNode) {
|
||||||
var visitor func(*filetree.FileNode) error
|
var visitor func(*filetree.FileNode) error
|
||||||
|
Loading…
x
Reference in New Issue
Block a user