diff --git a/kittens/themes/ui.go b/kittens/themes/ui.go index cf944ff9c..ac740c8b0 100644 --- a/kittens/themes/ui.go +++ b/kittens/themes/ui.go @@ -327,6 +327,11 @@ func (self *handler) draw_browsing_screen() { } self.lp.MoveCursorHorizontally(mw - l.width) self.lp.Println(SEPARATOR) + num_rows-- + } + for ; num_rows > 0; num_rows-- { + self.lp.MoveCursorHorizontally(mw + 1) + self.lp.Println(SEPARATOR) } if self.themes_list != nil && self.themes_list.Len() > 0 { self.draw_theme_demo() diff --git a/tools/cmd/list_fonts/ui.go b/tools/cmd/list_fonts/ui.go index 72d744fcf..d5d2977c3 100644 --- a/tools/cmd/list_fonts/ui.go +++ b/tools/cmd/list_fonts/ui.go @@ -94,12 +94,48 @@ func (h *handler) update_family_search() { } } +func (h *handler) next(delta int, allow_wrapping bool) { + if h.family_list.Next(delta, allow_wrapping) { + h.draw_screen() + } else { + h.lp.Beep() + } +} + func (h *handler) handle_listing_key_event(event *loop.KeyEvent) (err error) { if event.MatchesPressOrRepeat("ctrl+c") || event.MatchesPressOrRepeat("esc") { h.lp.Quit(1) event.Handled = true return } + ev := event + if ev.MatchesPressOrRepeat("down") { + h.next(1, true) + ev.Handled = true + return nil + } + if ev.MatchesPressOrRepeat("up") { + h.next(-1, true) + ev.Handled = true + return nil + } + if ev.MatchesPressOrRepeat("page_down") { + ev.Handled = true + sz, err := h.lp.ScreenSize() + if err == nil { + h.next(int(sz.HeightCells)-3, false) + } + return nil + } + if ev.MatchesPressOrRepeat("page_up") { + ev.Handled = true + sz, err := h.lp.ScreenSize() + if err == nil { + h.next(3-int(sz.HeightCells), false) + } + return nil + } + if err = h.rl.OnKeyEvent(event); err != nil { if err == readline.ErrAcceptInput { return nil