update `x_offset` calculation in Buffer::set_string_truncated (#3839)

when `truncate_start` is `true`, the `x_offset` is now properly updated
according to the width of the content or the truncated length.
pull/4783/head
kristopherbullinger 2 years ago committed by GitHub
parent 94346356e7
commit 7483c76222
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -360,14 +360,14 @@ impl Buffer {
let mut start_index = self.index_of(x, y); let mut start_index = self.index_of(x, y);
let mut index = self.index_of(max_offset as u16, y); let mut index = self.index_of(max_offset as u16, y);
let total_width = string.width(); let content_width = string.width();
let truncated = total_width > width; let truncated = content_width > width;
if ellipsis && truncated { if ellipsis && truncated {
self.content[start_index].set_symbol("…"); self.content[start_index].set_symbol("…");
start_index += 1; start_index += 1;
} }
if !truncated { if !truncated {
index -= width - total_width; index -= width - content_width;
} }
for (byte_offset, s) in graphemes.rev() { for (byte_offset, s) in graphemes.rev() {
let width = s.width(); let width = s.width();
@ -384,6 +384,7 @@ impl Buffer {
self.content[i].reset(); self.content[i].reset();
} }
index -= width; index -= width;
x_offset += width;
} }
} }
(x_offset as u16, y) (x_offset as u16, y)

Loading…
Cancel
Save