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
No known key found for this signature in database
GPG key ID: 06BC317B515ACE7C

View file

@ -287,7 +287,7 @@ func (self *Handler) resize_all_images_if_needed() {
}
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()
if err != nil {
return err
@ -305,6 +305,13 @@ func (self *Handler) handle_async_result(r AsyncResult) error {
self.highlight_all()
self.load_all_images()
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.calculate_statistics()
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 {
self.clear_mouse_selection()
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()
if err != nil {
return err