mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 12:48:10 +00:00
LibGUI: Extract ScrollBar::component_at_position() method
...and use it in mousedown_event(), which allows putting in stricter asserts.
This commit is contained in:
parent
10c6f062b3
commit
bf0b5c3c5a
2 changed files with 26 additions and 14 deletions
|
@ -278,20 +278,25 @@ void ScrollBar::mousedown_event(MouseEvent& event)
|
|||
if (!has_scrubber())
|
||||
return;
|
||||
|
||||
if (decrement_button_rect().contains(event.position())) {
|
||||
Component clicked_component = component_at_position(event.position());
|
||||
|
||||
if (clicked_component == Component::DecrementButton) {
|
||||
set_automatic_scrolling_active(true, AutomaticScrollingKind::DecrementButton);
|
||||
update();
|
||||
return;
|
||||
}
|
||||
if (increment_button_rect().contains(event.position())) {
|
||||
if (clicked_component == Component::IncrementButton) {
|
||||
set_automatic_scrolling_active(true, AutomaticScrollingKind::IncrementButton);
|
||||
update();
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.shift())
|
||||
if (event.shift()) {
|
||||
scroll_to_position(event.position());
|
||||
if (scrubber_rect().contains(event.position())) {
|
||||
clicked_component = component_at_position(event.position());
|
||||
ASSERT(clicked_component == Component::Scrubber);
|
||||
}
|
||||
if (clicked_component == Component::Scrubber) {
|
||||
m_scrubber_in_use = true;
|
||||
m_scrubbing = true;
|
||||
m_scrub_start_value = value();
|
||||
|
@ -301,6 +306,7 @@ void ScrollBar::mousedown_event(MouseEvent& event)
|
|||
}
|
||||
ASSERT(!event.shift());
|
||||
|
||||
ASSERT(clicked_component == Component::Gutter);
|
||||
// FIXME: If scrolling by page, scroll every second or so while mouse is down.
|
||||
scroll_by_page(event.position());
|
||||
}
|
||||
|
@ -358,19 +364,23 @@ void ScrollBar::scroll_to_position(const Gfx::IntPoint& click_position)
|
|||
set_value(m_min + rel_x_or_y * range_size);
|
||||
}
|
||||
|
||||
ScrollBar::Component ScrollBar::component_at_position(const Gfx::IntPoint& position)
|
||||
{
|
||||
if (scrubber_rect().contains(position))
|
||||
return Component::Scrubber;
|
||||
if (decrement_button_rect().contains(position))
|
||||
return Component::DecrementButton;
|
||||
if (increment_button_rect().contains(position))
|
||||
return Component::IncrementButton;
|
||||
if (rect().contains(position))
|
||||
return Component::Gutter;
|
||||
return Component::Invalid;
|
||||
}
|
||||
|
||||
void ScrollBar::mousemove_event(MouseEvent& event)
|
||||
{
|
||||
auto old_hovered_component = m_hovered_component;
|
||||
if (scrubber_rect().contains(event.position()))
|
||||
m_hovered_component = Component::Scrubber;
|
||||
else if (decrement_button_rect().contains(event.position()))
|
||||
m_hovered_component = Component::DecrementButton;
|
||||
else if (increment_button_rect().contains(event.position()))
|
||||
m_hovered_component = Component::IncrementButton;
|
||||
else if (rect().contains(event.position()))
|
||||
m_hovered_component = Component::Gutter;
|
||||
else
|
||||
m_hovered_component = Component::Invalid;
|
||||
m_hovered_component = component_at_position(event.position());
|
||||
if (old_hovered_component != m_hovered_component) {
|
||||
update();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue