kitten diff: Fix incorrect rendering if diff completes before terminal responds to capabilities query

This commit is contained in:
Kovid Goyal
2025-09-02 11:29:55 +05:30
parent e1d8565fb6
commit ecf7f0cab0

View File

@@ -287,7 +287,7 @@ func (self *Handler) resize_all_images_if_needed() {
} }
func (self *Handler) rerender_diff() error { func (self *Handler) rerender_diff() error {
if self.diff_map != nil && self.collection != nil { if self.diff_map != nil && self.collection != nil && self.terminal_capabilities_received {
err := self.render_diff() err := self.render_diff()
if err != nil { if err != nil {
return err return err
@@ -305,6 +305,13 @@ func (self *Handler) handle_async_result(r AsyncResult) error {
self.highlight_all() self.highlight_all()
self.load_all_images() self.load_all_images()
case DIFF: case DIFF:
if !self.terminal_capabilities_received {
go func() {
self.async_results <- r
self.lp.WakeupMainThread()
}()
return nil
}
self.diff_map = r.diff_map self.diff_map = r.diff_map
self.calculate_statistics() self.calculate_statistics()
self.clear_mouse_selection() self.clear_mouse_selection()
@@ -333,7 +340,7 @@ func (self *Handler) handle_async_result(r AsyncResult) error {
func (self *Handler) on_resize(old_size, new_size loop.ScreenSize) error { func (self *Handler) on_resize(old_size, new_size loop.ScreenSize) error {
self.clear_mouse_selection() self.clear_mouse_selection()
self.update_screen_size(new_size) self.update_screen_size(new_size)
if self.diff_map != nil && self.collection != nil { if self.diff_map != nil && self.collection != nil && self.terminal_capabilities_received {
err := self.render_diff() err := self.render_diff()
if err != nil { if err != nil {
return err return err