1
0
mirror of https://github.com/emilk/egui.git synced 2026-06-26 14:49:06 -04:00

Fix wrong galley split behavior when text ends with new line (#7320)

* Fixes a bug introduced by #7316 

The last `\n` was ignored for texts ending with `\n` in the galley split
logic.
This commit is contained in:
Lucas Meurer
2025-07-09 18:18:06 +02:00
committed by GitHub
parent 9fd0ad36e0
commit 087e56abae

View File

@@ -886,9 +886,12 @@ impl GalleyCache {
let is_first_paragraph = start == 0;
// `end` will not include the `\n` since we don't want to create an empty row in our
// split galley
let end = job.text[start..]
let mut end = job.text[start..]
.find('\n')
.map_or(job.text.len(), |i| start + i);
if end == job.text.len() - 1 && job.text.ends_with('\n') {
end += 1; // If the text ends with a newline, we include it in the last paragraph.
}
let mut paragraph_job = LayoutJob {
text: job.text[start..end].to_owned(),
@@ -1083,6 +1086,12 @@ mod tests {
Color32::WHITE,
f32::INFINITY,
),
LayoutJob::simple(
"ends with newlines\n\n".to_owned(),
FontId::new(14.0, FontFamily::Monospace),
Color32::WHITE,
f32::INFINITY,
),
LayoutJob::simple(
"Simple test.".to_owned(),
FontId::new(14.0, FontFamily::Monospace),