Fix zerowidth characters in the last column

This commit fixes the issue that when attempting to write zerowidth
characters into the last column, it is written in the second to last
column instead.

Fixes #4227.

Co-authored-by: Christian Duerr <contact@christianduerr.com>
This commit is contained in:
Kirill Chibisov 2020-11-15 03:28:03 +03:00 committed by GitHub
parent 198d3cb78d
commit 2a16cc5155
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 1 deletions

View File

@ -74,6 +74,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Crash when writing to the clipboard fails on Wayland
- Crash with large negative `font.offset.x/y`
- Visual bell getting stuck on the first frame
- Zerowidth characters in the last column of the line
## 0.5.0

View File

@ -1480,11 +1480,18 @@ impl<T: EventListener> Handler for Term<T> {
// Handle zero-width characters.
if width == 0 {
let mut col = self.grid.cursor.point.col.0.saturating_sub(1);
// Get previous column.
let mut col = self.grid.cursor.point.col.0;
if !self.grid.cursor.input_needs_wrap {
col = col.saturating_sub(1);
}
// Put zerowidth characters over first fullwidth character cell.
let line = self.grid.cursor.point.line;
if self.grid[line][Column(col)].flags.contains(Flags::WIDE_CHAR_SPACER) {
col = col.saturating_sub(1);
}
self.grid[line][Column(col)].push_zerowidth(c);
return;
}