mirror of
https://github.com/RGBCube/serenity
synced 2025-06-01 11:58:13 +00:00
GScrollBar: Start looking a bit more like a proper scrollbar.
And hook up FileManager's DirectoryView with its scrollbar so it actually causes the directory view to shift up and down. Very cool. :^)
This commit is contained in:
parent
1f355f2a79
commit
6a3ff7efc5
2 changed files with 14 additions and 10 deletions
|
@ -17,6 +17,11 @@ DirectoryView::DirectoryView(GWidget* parent)
|
||||||
m_symlink_icon = GraphicsBitmap::load_from_file("/res/icons/link16.rgb", { 16, 16 });
|
m_symlink_icon = GraphicsBitmap::load_from_file("/res/icons/link16.rgb", { 16, 16 });
|
||||||
|
|
||||||
m_scrollbar = new GScrollBar(this);
|
m_scrollbar = new GScrollBar(this);
|
||||||
|
m_scrollbar->set_step(4);
|
||||||
|
m_scrollbar->set_big_step(30);
|
||||||
|
m_scrollbar->on_change = [this] (int) {
|
||||||
|
update();
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
DirectoryView::~DirectoryView()
|
DirectoryView::~DirectoryView()
|
||||||
|
@ -63,7 +68,8 @@ void DirectoryView::reload()
|
||||||
entries.append(move(entry));
|
entries.append(move(entry));
|
||||||
}
|
}
|
||||||
closedir(dirp);
|
closedir(dirp);
|
||||||
m_scrollbar->set_range(0, item_count() - 1);
|
int excess_height = max(0, (item_count() * item_height()) - height());
|
||||||
|
m_scrollbar->set_range(0, excess_height);
|
||||||
}
|
}
|
||||||
|
|
||||||
const GraphicsBitmap& DirectoryView::icon_for(const Entry& entry) const
|
const GraphicsBitmap& DirectoryView::icon_for(const Entry& entry) const
|
||||||
|
@ -107,6 +113,8 @@ void DirectoryView::paint_event(GPaintEvent&)
|
||||||
{
|
{
|
||||||
Painter painter(*this);
|
Painter painter(*this);
|
||||||
|
|
||||||
|
painter.translate(0, -m_scrollbar->value());
|
||||||
|
|
||||||
int horizontal_padding = 5;
|
int horizontal_padding = 5;
|
||||||
int icon_size = 16;
|
int icon_size = 16;
|
||||||
int painted_item_index = 0;
|
int painted_item_index = 0;
|
||||||
|
|
|
@ -81,20 +81,16 @@ void GScrollBar::paint_event(GPaintEvent&)
|
||||||
{
|
{
|
||||||
Painter painter(*this);
|
Painter painter(*this);
|
||||||
|
|
||||||
painter.fill_rect(rect(), Color(0xc0c0c0));
|
painter.fill_rect(rect(), Color::MidGray);
|
||||||
|
|
||||||
painter.draw_rect(up_button_rect(), Color::DarkGray, true);
|
painter.draw_rect(up_button_rect(), Color::DarkGray, true);
|
||||||
painter.fill_rect(up_button_rect().shrunken(2, 2), Color::LightGray);
|
painter.fill_rect_with_gradient(up_button_rect().shrunken(2, 2), Color::LightGray, Color::White);
|
||||||
|
|
||||||
painter.draw_rect(down_button_rect(), Color::DarkGray, true);
|
painter.draw_rect(down_button_rect(), Color::DarkGray, true);
|
||||||
painter.fill_rect(down_button_rect().shrunken(2, 2), Color::LightGray);
|
painter.fill_rect_with_gradient(down_button_rect().shrunken(2, 2), Color::LightGray, Color::White);
|
||||||
|
|
||||||
painter.fill_rect(pgup_rect(), Color::Magenta);
|
painter.draw_rect(scrubber_rect(), Color::White, true);
|
||||||
painter.fill_rect(pgdn_rect(), Color::Yellow);
|
painter.fill_rect_with_gradient(scrubber_rect().shrunken(2, 2), Color::LightGray, Color::White);
|
||||||
|
|
||||||
painter.fill_rect(scrubber_rect(), Color::Red);
|
|
||||||
|
|
||||||
dbgprintf("Paint!\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GScrollBar::mousedown_event(GMouseEvent& event)
|
void GScrollBar::mousedown_event(GMouseEvent& event)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue