mirror of
https://github.com/RGBCube/serenity
synced 2025-05-20 14:15:07 +00:00
LibGfx+Everywhere: Change Gfx::Rect
to be endpoint exclusive
Previously, calling `.right()` on a `Gfx::Rect` would return the last column's coordinate still inside the rectangle, or `left + width - 1`. This is called 'endpoint inclusive' and does not make a lot of sense for `Gfx::Rect<float>` where a rectangle of width 5 at position (0, 0) would return 4 as its right side. This same problem exists for `.bottom()`. This changes `Gfx::Rect` to be endpoint exclusive, which gives us the nice property that `width = right - left` and `height = bottom - top`. It enables us to treat `Gfx::Rect<int>` and `Gfx::Rect<float>` exactly the same. All users of `Gfx::Rect` have been updated accordingly.
This commit is contained in:
parent
b7f4363791
commit
f391ccfe53
88 changed files with 524 additions and 518 deletions
|
@ -53,7 +53,7 @@ void TableView::paint_event(PaintEvent& event)
|
|||
|
||||
bool dummy;
|
||||
int first_visible_row = index_at_event_position(frame_inner_rect().top_left().translated(x_offset, y_offset), dummy).row();
|
||||
int last_visible_row = index_at_event_position(frame_inner_rect().bottom_right().translated(x_offset, y_offset), dummy).row();
|
||||
int last_visible_row = index_at_event_position(frame_inner_rect().bottom_right().translated(-1).translated(x_offset, y_offset), dummy).row();
|
||||
|
||||
if (first_visible_row == -1)
|
||||
first_visible_row = 0;
|
||||
|
@ -136,9 +136,9 @@ void TableView::paint_event(PaintEvent& event)
|
|||
}
|
||||
|
||||
if (m_grid_style == GridStyle::Horizontal || m_grid_style == GridStyle::Both)
|
||||
painter.draw_line(cell_rect_for_fill.bottom_left(), cell_rect_for_fill.bottom_right(), palette().ruler());
|
||||
painter.draw_line(cell_rect_for_fill.bottom_left().moved_up(1), cell_rect_for_fill.bottom_right().translated(-1), palette().ruler());
|
||||
if (m_grid_style == GridStyle::Vertical || m_grid_style == GridStyle::Both)
|
||||
painter.draw_line(cell_rect_for_fill.top_right(), cell_rect_for_fill.bottom_right(), palette().ruler());
|
||||
painter.draw_line(cell_rect_for_fill.top_right().moved_left(1), cell_rect_for_fill.bottom_right().translated(-1), palette().ruler());
|
||||
|
||||
if (selection_behavior() == SelectionBehavior::SelectItems && cell_index == cursor_index())
|
||||
painter.draw_rect(cell_rect_for_fill, palette().text_cursor());
|
||||
|
@ -173,7 +173,7 @@ void TableView::second_paint_event(PaintEvent& event)
|
|||
|
||||
// The rubber band rect always borders the widget inner to the left and right
|
||||
auto rubber_band_left = widget_inner_rect().left();
|
||||
auto rubber_band_right = widget_inner_rect().right() + 1;
|
||||
auto rubber_band_right = widget_inner_rect().right();
|
||||
|
||||
auto rubber_band_rect = Gfx::IntRect::from_two_points({ rubber_band_left, m_rubber_band_origin }, { rubber_band_right, m_rubber_band_current });
|
||||
|
||||
|
@ -250,7 +250,7 @@ void TableView::mousemove_event(MouseEvent& event)
|
|||
{
|
||||
if (m_rubber_banding) {
|
||||
// The rubber band rect cannot go outside the bounds of the rect enclosing all rows
|
||||
m_rubber_band_current = clamp(event.position().y(), widget_inner_rect().top() + column_header().height(), widget_inner_rect().bottom() + 1);
|
||||
m_rubber_band_current = clamp(event.position().y(), widget_inner_rect().top() + column_header().height(), widget_inner_rect().bottom());
|
||||
|
||||
int row_count = model()->row_count();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue