1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-28 16:45:09 +00:00

LibGUI: Use GFrame to draw the frames around GItemView and GTableView.

This commit is contained in:
Andreas Kling 2019-03-28 16:58:29 +01:00
parent 1fc03a7644
commit 3dc4255eb4
5 changed files with 27 additions and 14 deletions

View file

@ -24,15 +24,22 @@ void GFrame::paint_event(GPaintEvent& event)
Color top_left_color; Color top_left_color;
Color bottom_right_color; Color bottom_right_color;
Color dark_shade = Color::from_rgb(0x808080);
Color light_shade = Color::from_rgb(0xffffff);
if (m_shape == Shape::Container) {
dark_shade = Color::from_rgb(0x404040);
}
if (m_shadow == Shadow::Raised) { if (m_shadow == Shadow::Raised) {
top_left_color = Color::White; top_left_color = light_shade;
bottom_right_color = Color::MidGray; bottom_right_color = dark_shade;
} else if (m_shadow == Shadow::Sunken) { } else if (m_shadow == Shadow::Sunken) {
top_left_color = Color::MidGray; top_left_color = dark_shade;
bottom_right_color = Color::White; bottom_right_color = light_shade;
} else if (m_shadow == Shadow::Plain) { } else if (m_shadow == Shadow::Plain) {
top_left_color = Color::MidGray; top_left_color = dark_shade;
bottom_right_color = Color::MidGray; bottom_right_color = dark_shade;
} }
painter.draw_line(rect.top_left(), rect.top_right(), top_left_color); painter.draw_line(rect.top_left(), rect.top_right(), top_left_color);

View file

@ -8,7 +8,7 @@ public:
virtual ~GFrame() override; virtual ~GFrame() override;
enum Shadow { Plain, Raised, Sunken }; enum Shadow { Plain, Raised, Sunken };
enum Shape { NoFrame, Box, Panel, VerticalLine, HorizontalLine }; enum Shape { NoFrame, Container, Panel, VerticalLine, HorizontalLine };
int frame_thickness() const { return m_thickness; } int frame_thickness() const { return m_thickness; }
void set_frame_thickness(int thickness) { m_thickness = thickness; } void set_frame_thickness(int thickness) { m_thickness = thickness; }

View file

@ -7,6 +7,9 @@
GItemView::GItemView(GWidget* parent) GItemView::GItemView(GWidget* parent)
: GAbstractView(parent) : GAbstractView(parent)
{ {
set_frame_shape(GFrame::Shape::Container);
set_frame_shadow(GFrame::Shadow::Sunken);
set_frame_thickness(1);
horizontal_scrollbar().set_visible(false); horizontal_scrollbar().set_visible(false);
} }
@ -93,10 +96,12 @@ void GItemView::doubleclick_event(GMouseEvent& event)
void GItemView::paint_event(GPaintEvent& event) void GItemView::paint_event(GPaintEvent& event)
{ {
GFrame::paint_event(event);
Painter painter(*this); Painter painter(*this);
painter.set_clip_rect(widget_inner_rect());
painter.set_clip_rect(event.rect()); painter.set_clip_rect(event.rect());
painter.fill_rect(event.rect(), Color::White); painter.fill_rect(event.rect(), Color::White);
painter.save();
painter.translate(-horizontal_scrollbar().value(), -vertical_scrollbar().value()); painter.translate(-horizontal_scrollbar().value(), -vertical_scrollbar().value());
auto column_metadata = model()->column_metadata(m_model_column); auto column_metadata = model()->column_metadata(m_model_column);
@ -138,11 +143,6 @@ void GItemView::paint_event(GPaintEvent& event)
painter.fill_rect(text_rect, background_color); painter.fill_rect(text_rect, background_color);
painter.draw_text(text_rect, item_text.to_string(), font, TextAlignment::Center, text_color); painter.draw_text(text_rect, item_text.to_string(), font, TextAlignment::Center, text_color);
}; };
painter.restore();
if (is_focused())
painter.draw_rect({ { }, available_size() }, Color::from_rgb(0x84351a));
} }
int GItemView::item_count() const int GItemView::item_count() const

View file

@ -7,6 +7,9 @@
GTableView::GTableView(GWidget* parent) GTableView::GTableView(GWidget* parent)
: GAbstractView(parent) : GAbstractView(parent)
{ {
set_frame_shape(GFrame::Shape::Container);
set_frame_shadow(GFrame::Shadow::Sunken);
set_frame_thickness(1);
} }
GTableView::~GTableView() GTableView::~GTableView()
@ -95,7 +98,10 @@ void GTableView::mousedown_event(GMouseEvent& event)
void GTableView::paint_event(GPaintEvent& event) void GTableView::paint_event(GPaintEvent& event)
{ {
GFrame::paint_event(event);
Painter painter(*this); Painter painter(*this);
painter.set_clip_rect(frame_inner_rect());
painter.set_clip_rect(event.rect()); painter.set_clip_rect(event.rect());
painter.save(); painter.save();
painter.translate(-horizontal_scrollbar().value(), -vertical_scrollbar().value()); painter.translate(-horizontal_scrollbar().value(), -vertical_scrollbar().value());

View file

@ -13,7 +13,7 @@ GTextEditor::GTextEditor(Type type, GWidget* parent)
: GScrollableWidget(parent) : GScrollableWidget(parent)
, m_type(type) , m_type(type)
{ {
set_frame_shape(GFrame::Shape::Panel); set_frame_shape(GFrame::Shape::Container);
set_frame_shadow(GFrame::Shadow::Sunken); set_frame_shadow(GFrame::Shadow::Sunken);
set_frame_thickness(1); set_frame_thickness(1);
set_scrollbars_enabled(is_multi_line()); set_scrollbars_enabled(is_multi_line());