[前][次][番号順一覧][スレッド一覧]

ruby-changes:67656

From: aycabta <ko1@a...>
Date: Wed, 8 Sep 2021 03:34:53 +0900 (JST)
Subject: [ruby-changes:67656] 11a00e3fa2 (master): [ruby/reline] Remove garbage left behind when rerendering the right side of the dialog

https://git.ruby-lang.org/ruby.git/commit/?id=11a00e3fa2

From 11a00e3fa2cdae7e65334097dc614ebe0c625e55 Mon Sep 17 00:00:00 2001
From: aycabta <aycabta@g...>
Date: Wed, 8 Sep 2021 03:18:22 +0900
Subject: [ruby/reline] Remove garbage left behind when rerendering the right
 side of the dialog

https://github.com/ruby/reline/commit/d89c23e30b
---
 lib/reline/line_editor.rb | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/lib/reline/line_editor.rb b/lib/reline/line_editor.rb
index 21c031d..7afc3ed 100644
--- a/lib/reline/line_editor.rb
+++ b/lib/reline/line_editor.rb
@@ -706,7 +706,8 @@ class Reline::LineEditor https://github.com/ruby/ruby/blob/trunk/lib/reline/line_editor.rb#L706
           bg_color = '46'
         end
       end
-      str = padding_space_with_escape_sequences(Reline::Unicode.take_range(item, 0, dialog.width - @block_elem_width), dialog.width - @block_elem_width)
+      str_width = dialog.width - (dialog.scrollbar_pos.nil? ? 0 : @block_elem_width)
+      str = padding_space_with_escape_sequences(Reline::Unicode.take_range(item, 0, str_width), str_width)
       @output.write "\e[#{bg_color}m#{str}"
       if dialog.scrollbar_pos and dialog.scrollbar_pos != old_dialog.scrollbar_pos
         @output.write "\e[37m"
@@ -815,7 +816,7 @@ class Reline::LineEditor https://github.com/ruby/ruby/blob/trunk/lib/reline/line_editor.rb#L816
     if (old_dialog.column + old_dialog.width - old_dialog_scrollbar) > (dialog.column + dialog.width - dialog_scrollbar)
       # rerender right
       move_cursor_down(old_dialog.vertical_offset + y_diff)
-      width = (old_dialog.column + old_dialog.width) - (dialog.column + dialog.width)
+      width = (old_dialog.column + old_dialog.width - old_dialog_scrollbar) - (dialog.column + dialog.width - dialog_scrollbar)
       start = visual_start + old_dialog.vertical_offset
       line_num = old_dialog.contents.size
       line_num.times do |i|
@@ -826,7 +827,7 @@ class Reline::LineEditor https://github.com/ruby/ruby/blob/trunk/lib/reline/line_editor.rb#L827
           s = Reline::Unicode.take_range(visual_lines[start + i], old_dialog.column + dialog.width, width)
           s = padding_space_with_escape_sequences(s, dialog.width)
         end
-        Reline::IOGate.move_cursor_column(dialog.column + dialog.width)
+        Reline::IOGate.move_cursor_column(dialog.column + dialog.width - dialog_scrollbar)
         @output.write "\e[39m\e[49m#{s}\e[39m\e[49m"
         move_cursor_down(1) if i < (line_num - 1)
       end
-- 
cgit v1.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]