1
0
Fork 0
mirror of https://github.com/alacritty/alacritty.git synced 2025-03-03 16:14:46 -05:00

Fix IME preview overlapping text

Fix incorrect usage of the `flags` when drawing the preedit resulting
in setting the `flags`, but not actually reading the value back.

The logic to skip things was also used incorrectly, because the renderer
does that already based on the `WIDE_CHAR` flag on the cell.

Fixes: 67a433ceed (Skip whitespaces for wide chars in preedit)
This commit is contained in:
Kirill Chibisov 2024-04-21 15:23:10 +04:00 committed by GitHub
parent 44dc9e19f4
commit 90054614c2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 20 additions and 20 deletions

View file

@ -10,14 +10,15 @@ Notable changes to the `alacritty_terminal` crate are documented in its
## 0.14.0-dev
### Changed
- Pressing `Alt` with unicode input will now add `ESC` like for ASCII input
### Fixed
- Crash when trying to create a new tab without decorations enabled
- New window being treated as focused when it's not on Wayland
### Changed
- Pressing `Alt` with unicode input will now add `ESC` like for ASCII input
- IME preview blending into text below it
## 0.13.2

View file

@ -205,30 +205,29 @@ impl Renderer {
size_info: &SizeInfo,
glyph_cache: &mut GlyphCache,
) {
let mut skip_next = false;
let cells = string_chars.enumerate().filter_map(|(i, character)| {
if skip_next {
skip_next = false;
return None;
}
let mut wide_char_spacer = false;
let cells = string_chars.enumerate().map(|(i, character)| {
let flags = if wide_char_spacer {
wide_char_spacer = false;
Flags::WIDE_CHAR_SPACER
} else if character.width() == Some(2) {
// The spacer is always following the wide char.
wide_char_spacer = true;
Flags::WIDE_CHAR
} else {
Flags::empty()
};
let mut flags = Flags::empty();
if character.width() == Some(2) {
flags.insert(Flags::WIDE_CHAR);
// Wide character is always followed by a spacer, so skip it.
skip_next = true;
}
Some(RenderableCell {
RenderableCell {
point: Point::new(point.line, point.column + i),
character,
extra: None,
flags: Flags::empty(),
flags,
bg_alpha: 1.0,
fg,
bg,
underline: fg,
})
}
});
self.draw_cells(size_info, glyph_cache, cells);