From 087e56abaeddbce9a80b13a9387019f5fb3372e5 Mon Sep 17 00:00:00 2001 From: Lucas Meurer Date: Wed, 9 Jul 2025 18:18:06 +0200 Subject: [PATCH] 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. --- crates/epaint/src/text/fonts.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/crates/epaint/src/text/fonts.rs b/crates/epaint/src/text/fonts.rs index 30c71eea..e59f9bc2 100644 --- a/crates/epaint/src/text/fonts.rs +++ b/crates/epaint/src/text/fonts.rs @@ -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),