Avoid needing to resend images on every draw_screen()

This commit is contained in:
Kovid Goyal 2018-05-10 15:58:52 +05:30
parent eab1fbbbb0
commit ed511c296c
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 5 additions and 5 deletions

View File

@ -166,14 +166,14 @@ class DiffHandler(Handler):
text = line.text
if line.image_data is not None:
image_involved = True
self.write('\r' + text + '\x1b[0m')
self.write('\r\x1b[K' + text + '\x1b[0m')
if i < num - 1:
self.write('\n')
if image_involved:
self.place_images()
self.cmd.set_cursor_position(0, self.num_lines - 1)
def place_images(self):
self.cmd.clear_images_on_screen()
offset = self.scroll_pos
limit = len(self.diff_lines)
in_image = False
@ -204,7 +204,6 @@ class DiffHandler(Handler):
if visible_frac > 0:
height = int(visible_frac * placement.image.height)
top = placement.image.height - height
self.image_manager.hide_image(placement.image.image_id)
self.image_manager.show_image(placement.image.image_id, xpos, row, src_rect=(
0, top, placement.image.width, height))
@ -214,7 +213,8 @@ class DiffHandler(Handler):
self.cmd.clear_screen()
self.write(_('Calculating diff, please wait...'))
return
self.cmd.clear_screen()
self.cmd.clear_images_on_screen()
self.cmd.set_cursor_position(0, 0)
self.draw_lines(self.num_lines)
self.draw_status_line()

View File

@ -400,7 +400,7 @@ def render_image(path, is_left, available_cols, margin_size, image_manager):
lnum += 1
try:
image_id, width, height = image_manager.send_image(path, available_cols - margin_size, screen_size().rows - 1)
image_id, width, height = image_manager.send_image(path, available_cols - margin_size, screen_size().rows - 2)
except Exception as e:
yield from yield_split(_('Failed to render image, with error:'))
yield from yield_split(' '.join(str(e).splitlines()))