1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-28 14:17:34 +00:00

LibGfx: Fix error & crash in Rect::closest_to

Assertion fails if the point is outside of the rect. This was introduced
in introduced in #18970 and causes serenity to crash when changing to 2x
resolution for a monitor, if the cursor after resizing is outside of
the new screen.

Added test to reproduce.
This commit is contained in:
Sebastian Zaha 2023-06-28 23:42:56 +02:00 committed by Jelle Raaijmakers
parent 0cb9c9e81e
commit d52a2ff10e
2 changed files with 13 additions and 2 deletions

View file

@ -45,3 +45,14 @@ TEST_CASE(rect_shatter)
EXPECT_EQ(glass_plate.size().area() - hammer.size().area(), total_shard_area);
}
TEST_CASE(rect_closest_to)
{
Gfx::IntRect const screen_rect = { 0, 0, 960, 540 };
Gfx::Point<int> p = { 460, 592 }; // point is below the rect
Gfx::Point<int> closest = screen_rect.closest_to(p);
EXPECT_EQ(screen_rect.side(closest), Gfx::IntRect::Side::Bottom);
p = { 960, 0 }; // point exactly on top right corner
closest = screen_rect.closest_to(p);
EXPECT_EQ(screen_rect.side(closest), Gfx::IntRect::Side::Top);
}