1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-20 16:55:08 +00:00

Spreadsheet: Let GUI::TableView paint the grid and cursor :^)

This commit is contained in:
Andreas Kling 2020-08-28 17:08:57 +02:00
parent 2222fc5e08
commit ccea1b2376

View file

@ -57,6 +57,8 @@ SpreadsheetView::SpreadsheetView(Sheet& sheet)
{ {
set_layout<GUI::VerticalBoxLayout>().set_margins({ 2, 2, 2, 2 }); set_layout<GUI::VerticalBoxLayout>().set_margins({ 2, 2, 2, 2 });
m_table_view = add<GUI::TableView>(); m_table_view = add<GUI::TableView>();
m_table_view->set_grid_style(GUI::TableView::GridStyle::Both);
m_table_view->set_cursor_style(GUI::TableView::CursorStyle::Item);
m_table_view->row_header().set_visible(true); m_table_view->row_header().set_visible(true);
m_table_view->set_model(SheetModel::create(*m_sheet)); m_table_view->set_model(SheetModel::create(*m_sheet));
@ -125,16 +127,11 @@ void SpreadsheetView::TableCellPainter::paint(GUI::Painter& painter, const Gfx::
// Undo the horizontal padding done by the table view... // Undo the horizontal padding done by the table view...
auto cell_rect = rect.inflated(m_table_view.horizontal_padding() * 2, 0); auto cell_rect = rect.inflated(m_table_view.horizontal_padding() * 2, 0);
painter.draw_line(cell_rect.bottom_left(), cell_rect.bottom_right(), palette.ruler());
painter.draw_line(cell_rect.top_right(), cell_rect.bottom_right(), palette.ruler());
if (m_table_view.selection().contains(index)) { if (m_table_view.selection().contains(index)) {
Color fill_color = palette.selection(); Color fill_color = palette.selection();
fill_color.set_alpha(80); fill_color.set_alpha(80);
painter.fill_rect(cell_rect, fill_color); painter.fill_rect(cell_rect, fill_color);
} }
if (m_table_view.cursor_index() == index)
painter.draw_rect(cell_rect, palette.text_cursor());
auto text_color = index.data(GUI::ModelRole::ForegroundColor).to_color(palette.color(m_table_view.foreground_role())); auto text_color = index.data(GUI::ModelRole::ForegroundColor).to_color(palette.color(m_table_view.foreground_role()));
auto data = index.data(); auto data = index.data();