diff --git a/pkg/cmd/extension/browse/browse.go b/pkg/cmd/extension/browse/browse.go index 3ae04ef3e..3c246184b 100644 --- a/pkg/cmd/extension/browse/browse.go +++ b/pkg/cmd/extension/browse/browse.go @@ -494,8 +494,6 @@ func ExtBrowse(opts ExtBrowseOpts) error { app.SetAfterDrawFunc(nil) }) - helpActive := false - // TODO filter should not be activated when helpActive is true app.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey { @@ -503,40 +501,49 @@ func ExtBrowse(opts ExtBrowseOpts) error { return event } + curPage, _ := pages.GetFrontPage() + + if curPage != "main" { + if event.Rune() == 'q' || event.Key() == tcell.KeyEscape { + pages.SwitchToPage("main") + return nil + } + switch curPage { + case "readme": + switch event.Key() { + case tcell.KeyPgUp: + row, col := readme.GetScrollOffset() + if row > 0 { + readme.ScrollTo(row-2, col) + } + case tcell.KeyPgDn: + row, col := readme.GetScrollOffset() + readme.ScrollTo(row+2, col) + } + case "help": + switch event.Rune() { + case '?': + pages.SwitchToPage("main") + } + } + return nil + } + switch event.Rune() { case '?': - if helpActive { - pages.SwitchToPage("main") - helpActive = false - return nil - } - helpActive = true pages.SwitchToPage("help") + return nil case 'q': - if helpActive { - helpActive = false - pages.SwitchToPage("main") - return nil - } app.Stop() case 'k': - if helpActive { - return nil - } extList.ScrollUp() readme.SetText("...fetching readme...") go loadSelectedReadme() case 'j': - if helpActive { - return nil - } extList.ScrollDown() readme.SetText("...fetching readme...") go loadSelectedReadme() case 'w': - if helpActive { - return nil - } ee, ix := extList.FindSelected() if ix < 0 { opts.Logger.Println("failed to find selected entry") @@ -547,19 +554,10 @@ func ExtBrowse(opts ExtBrowseOpts) error { opts.Logger.Println(fmt.Errorf("could not open browser for '%s': %w", ee.URL, err)) } case 'i': - if helpActive { - return nil - } extList.InstallSelected() case 'r': - if helpActive { - return nil - } extList.RemoveSelected() case ' ': - if helpActive { - return nil - } // The shift check works on windows and not linux/mac: if event.Modifiers()&tcell.ModShift != 0 { extList.PageUp() @@ -568,70 +566,31 @@ func ExtBrowse(opts ExtBrowseOpts) error { } go loadSelectedReadme() case '/': - if helpActive { - return nil - } app.SetFocus(filter) return nil } switch event.Key() { case tcell.KeyUp: - if helpActive { - return nil - } extList.ScrollUp() go loadSelectedReadme() return nil case tcell.KeyDown: - if helpActive { - return nil - } extList.ScrollDown() go loadSelectedReadme() return nil case tcell.KeyEscape: - if helpActive { - helpActive = false - pages.SwitchToPage("main") - return nil - } filter.SetText("") extList.Reset() case tcell.KeyCtrlSpace: - if helpActive { - return nil - } // The ctrl check works on linux/mac and not windows: extList.PageUp() go loadSelectedReadme() case tcell.KeyCtrlJ: - if helpActive { - return nil - } extList.PageDown() go loadSelectedReadme() case tcell.KeyCtrlK: - if helpActive { - return nil - } extList.PageUp() go loadSelectedReadme() - case tcell.KeyPgUp: - if helpActive { - return nil - } - row, col := readme.GetScrollOffset() - if row > 0 { - readme.ScrollTo(row-2, col) - } - return nil - case tcell.KeyPgDn: - if helpActive { - return nil - } - row, col := readme.GetScrollOffset() - readme.ScrollTo(row+2, col) - return nil } return event