editor: Fix panics that could occur when content mask had negative bounds (#47327) (cherry-pick to preview) (#47502)
zed-zippy[bot]
,
Anthony Eid
, and
Zed Zippy
created
Cherry-pick of #47327 to preview
----
Closes #47157
This panic happened because the editor was using `window.content_mask`
to get the visible bounds, which had a negative value for its height in
some cases.
This happened for three reasons:
1. `Bounds::from_corners` returns a negative size if callers pass in
corners where `bottom_right < top_left`. I originally wanted to add
error checking to this function but didn't, because it might be better
to move the error checking higher up. For now I'm going to push a fix
and figure out a better solution later
2. `Bounds::intersect` could return negative-sized bounds when the two
bounds didn't overlap, instead of returning a zero sized bounds.
3. `Style::paint` sometimes passed invalid corner values to
`Bounds::from_corners` (where the computed bottom-right was above/left
of the top-left).
Release Notes:
- editor: Fix a crash that could happen when editor visible line height
is zero
---------
Co-authored-by: Zed Zippy
<234243425+zed-zippy[bot]@users.noreply.github.com>
Co-authored-by: Anthony Eid <56899983+Anthony-Eid@users.noreply.github.com>
Co-authored-by: Zed Zippy <234243425+zed-zippy[bot]@users.noreply.github.com>