mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-28 03:01:57 +02:00
Only unload preview when changed instead of on each render
This commit is contained in:
@@ -207,18 +207,19 @@ type ScreenSize struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Handler struct {
|
type Handler struct {
|
||||||
state State
|
state State
|
||||||
screen_size ScreenSize
|
screen_size ScreenSize
|
||||||
result_manager *ResultManager
|
result_manager *ResultManager
|
||||||
lp *loop.Loop
|
lp *loop.Loop
|
||||||
rl *readline.Readline
|
rl *readline.Readline
|
||||||
err_chan chan error
|
err_chan chan error
|
||||||
shortcut_tracker config.ShortcutTracker
|
shortcut_tracker config.ShortcutTracker
|
||||||
msg_printer *message.Printer
|
msg_printer *message.Printer
|
||||||
spinner *tui.Spinner
|
spinner *tui.Spinner
|
||||||
preview_manager *PreviewManager
|
preview_manager *PreviewManager
|
||||||
last_rendered_preview Preview
|
last_rendered_preview Preview
|
||||||
graphics_handler GraphicsHandler
|
last_rendered_preview_abspath string
|
||||||
|
graphics_handler GraphicsHandler
|
||||||
}
|
}
|
||||||
|
|
||||||
func (self *Handler) on_escape_code(etype loop.EscapeCodeType, payload []byte) error {
|
func (self *Handler) on_escape_code(etype loop.EscapeCodeType, payload []byte) error {
|
||||||
|
|||||||
@@ -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)
|
h.render_wrapped_text_in_region("No preview available", x, y, width, height, false)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
abspath := filepath.Join(h.state.CurrentDir(), r.text)
|
abspath := h.current_abspath()
|
||||||
if h.last_rendered_preview != nil {
|
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.Unload()
|
||||||
h.last_rendered_preview = nil
|
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)
|
h.render_wrapped_text_in_region("No preview available", x, y, width, height, false)
|
||||||
} else {
|
} else {
|
||||||
h.last_rendered_preview = p
|
h.last_rendered_preview = p
|
||||||
|
h.last_rendered_preview_abspath = abspath
|
||||||
p.Render(h, x, y, width, height)
|
p.Render(h, x, y, width, height)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user