1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 15:48:12 +00:00

LibGUI: Splitter should only override cursor if within grabbable area

Fixes #3284
This commit is contained in:
Tom 2020-08-26 22:24:19 -06:00 committed by Andreas Kling
parent d876c49ec7
commit 4463fed398
2 changed files with 19 additions and 5 deletions

View file

@ -58,15 +58,25 @@ void Splitter::resize_event(ResizeEvent& event)
m_grabbable_rect = {};
}
void Splitter::enter_event(Core::Event&)
void Splitter::override_cursor(bool do_override)
{
window()->set_override_cursor(m_orientation == Orientation::Horizontal ? StandardCursor::ResizeColumn : StandardCursor::ResizeRow);
if (do_override) {
if (!m_overriding_cursor) {
window()->set_override_cursor(m_orientation == Orientation::Horizontal ? StandardCursor::ResizeColumn : StandardCursor::ResizeRow);
m_overriding_cursor = true;
}
} else {
if (m_overriding_cursor) {
window()->set_override_cursor(StandardCursor::None);
m_overriding_cursor = false;
}
}
}
void Splitter::leave_event(Core::Event&)
{
if (!m_resizing)
window()->set_override_cursor(StandardCursor::None);
override_cursor(false);
if (!m_grabbable_rect.is_empty()) {
m_grabbable_rect = {};
update();
@ -134,9 +144,12 @@ void Splitter::mousemove_event(MouseEvent& event)
if (!m_resizing) {
Widget* first { nullptr };
Widget* second { nullptr };
if (!get_resize_candidates_at(event.position(), first, second))
if (!get_resize_candidates_at(event.position(), first, second)) {
override_cursor(false);
return;
}
recompute_grabbable_rect(*first, *second);
override_cursor(m_grabbable_rect.contains(event.position()));
return;
}
auto delta = event.position() - m_resize_origin;