Only unload preview when changed instead of on each render

This commit is contained in:
Kovid Goyal
2025-11-22 11:27:27 +05:30
parent 11dd7eeb8e
commit c5bde715a7
2 changed files with 19 additions and 13 deletions

View File

@@ -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 {

View File

@@ -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)
}
}