Fix panic in layout_line when Y coordinate is too high (cherry-pick #9052) (#9075)

gcp-cherry-pick-bot[bot] and Conrad Irwin created

Cherry-picked Fix panic in layout_line when Y coordinate is too high
(#9052)

Release Notes:

- N/A

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>

Change summary

crates/gpui/src/text_system/line_layout.rs | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)

Detailed changes

crates/gpui/src/text_system/line_layout.rs 🔗

@@ -247,10 +247,11 @@ impl WrappedLineLayout {
         let wrapped_line_ix = (position.y / line_height) as usize;
 
         let wrapped_line_start_x = if wrapped_line_ix > 0 {
-            let wrap_boundary_ix = wrapped_line_ix - 1;
-            let wrap_boundary = self.wrap_boundaries[wrap_boundary_ix];
-            let run = &self.unwrapped_layout.runs[wrap_boundary.run_ix];
-            run.glyphs[wrap_boundary.glyph_ix].position.x
+            let Some(line_start_boundary) = self.wrap_boundaries.get(wrapped_line_ix - 1) else {
+                return None;
+            };
+            let run = &self.unwrapped_layout.runs[line_start_boundary.run_ix];
+            run.glyphs[line_start_boundary.glyph_ix].position.x
         } else {
             Pixels::ZERO
         };