1
0
mirror of https://github.com/emilk/egui.git synced 2026-09-02 06:40:06 -04:00

Fix(egui): improve underline drawing

This commit is contained in:
umajho
2026-04-08 17:49:37 +08:00
parent b55bd5c19f
commit 97ef386b7f

View File

@@ -151,6 +151,40 @@ pub fn paint_ime_preedit_text_visuals(
color: active_underline_stroke.color.linear_multiply(0.5), color: active_underline_stroke.color.linear_multiply(0.5),
}; };
if let Some(relative_active_range) = &relative_active_range
&& !relative_active_range.is_empty()
{
if relative_active_range.start.index > 0 {
paint_underlines(
pos,
painter,
galley,
galley.layout_from_cursor(preedit_range.start),
galley.layout_from_cursor(preedit_range.start + relative_active_range.start.index),
inactive_underline_stroke,
);
}
paint_underlines(
pos,
painter,
galley,
galley.layout_from_cursor(preedit_range.start + relative_active_range.start.index),
galley.layout_from_cursor(preedit_range.start + relative_active_range.end.index),
active_underline_stroke,
);
if relative_active_range.end < preedit_range.end - preedit_range.start.index {
paint_underlines(
pos,
painter,
galley,
galley.layout_from_cursor(preedit_range.start + relative_active_range.end.index),
galley.layout_from_cursor(preedit_range.end),
inactive_underline_stroke,
);
}
} else {
paint_underlines( paint_underlines(
pos, pos,
painter, painter,
@@ -159,12 +193,11 @@ pub fn paint_ime_preedit_text_visuals(
galley.layout_from_cursor(preedit_range.end), galley.layout_from_cursor(preedit_range.end),
inactive_underline_stroke, inactive_underline_stroke,
); );
}
let Some(relative_active_range) = relative_active_range else { if let Some(relative_active_range) = relative_active_range
return; && relative_active_range.is_empty()
}; {
if relative_active_range.is_empty() {
let active_cursor = preedit_range.start + relative_active_range.start.index; let active_cursor = preedit_range.start + relative_active_range.start.index;
let cursor_rect = cursor_rect(galley, &active_cursor, row_height); let cursor_rect = cursor_rect(galley, &active_cursor, row_height);
@@ -174,15 +207,6 @@ pub fn paint_ime_preedit_text_visuals(
cursor_rect.translate(pos.to_vec2()), cursor_rect.translate(pos.to_vec2()),
time_since_last_interaction, time_since_last_interaction,
); );
} else {
paint_underlines(
pos,
painter,
galley,
galley.layout_from_cursor(preedit_range.start + relative_active_range.start.index),
galley.layout_from_cursor(preedit_range.start + relative_active_range.end.index),
inactive_underline_stroke,
);
} }
} }