diff --git a/kittens/choose_files/main.go b/kittens/choose_files/main.go index 383affc6e..d6030f091 100644 --- a/kittens/choose_files/main.go +++ b/kittens/choose_files/main.go @@ -207,18 +207,19 @@ type ScreenSize struct { } type Handler struct { - state State - screen_size ScreenSize - result_manager *ResultManager - lp *loop.Loop - rl *readline.Readline - err_chan chan error - shortcut_tracker config.ShortcutTracker - msg_printer *message.Printer - spinner *tui.Spinner - preview_manager *PreviewManager - last_rendered_preview Preview - graphics_handler GraphicsHandler + state State + screen_size ScreenSize + result_manager *ResultManager + lp *loop.Loop + rl *readline.Readline + err_chan chan error + shortcut_tracker config.ShortcutTracker + msg_printer *message.Printer + spinner *tui.Spinner + preview_manager *PreviewManager + last_rendered_preview Preview + last_rendered_preview_abspath string + graphics_handler GraphicsHandler } func (self *Handler) on_escape_code(etype loop.EscapeCodeType, payload []byte) error { diff --git a/kittens/choose_files/preview.go b/kittens/choose_files/preview.go index 69393c633..5a91dfcbd 100644 --- a/kittens/choose_files/preview.go +++ b/kittens/choose_files/preview.go @@ -326,8 +326,12 @@ func (h *Handler) draw_preview_content(x, y, width, height int) { h.render_wrapped_text_in_region("No preview available", x, y, width, height, false) return } - abspath := filepath.Join(h.state.CurrentDir(), r.text) + abspath := h.current_abspath() if h.last_rendered_preview != nil { + if abspath == h.last_rendered_preview_abspath { + h.last_rendered_preview.Render(h, x, y, width, height) + return + } h.last_rendered_preview.Unload() h.last_rendered_preview = nil } @@ -335,6 +339,7 @@ func (h *Handler) draw_preview_content(x, y, width, height int) { h.render_wrapped_text_in_region("No preview available", x, y, width, height, false) } else { h.last_rendered_preview = p + h.last_rendered_preview_abspath = abspath p.Render(h, x, y, width, height) } }