mirror of
https://github.com/RGBCube/serenity
synced 2025-05-18 14:15:08 +00:00
LibGUI+WindowServer: Implement drag-to-select behavior in GTextEditor.
To make this feel right, I needed to start passing keyboard modifiers along with mouse events. That allows shift-clicking to extend the selection. :^)
This commit is contained in:
parent
6d172725c0
commit
f40d11f06d
11 changed files with 73 additions and 21 deletions
|
@ -143,7 +143,7 @@ void GWindow::event(GEvent& event)
|
|||
auto& mouse_event = static_cast<GMouseEvent&>(event);
|
||||
auto window_relative_rect = m_global_cursor_tracking_widget->window_relative_rect();
|
||||
Point local_point { mouse_event.x() - window_relative_rect.x(), mouse_event.y() - window_relative_rect.y() };
|
||||
auto local_event = make<GMouseEvent>(event.type(), local_point, mouse_event.buttons(), mouse_event.button());
|
||||
auto local_event = make<GMouseEvent>(event.type(), local_point, mouse_event.buttons(), mouse_event.button(), mouse_event.modifiers());
|
||||
m_global_cursor_tracking_widget->event(*local_event);
|
||||
}
|
||||
if (!m_main_widget)
|
||||
|
@ -151,7 +151,7 @@ void GWindow::event(GEvent& event)
|
|||
auto& mouse_event = static_cast<GMouseEvent&>(event);
|
||||
if (m_main_widget) {
|
||||
auto result = m_main_widget->hit_test(mouse_event.x(), mouse_event.y());
|
||||
auto local_event = make<GMouseEvent>(event.type(), Point { result.localX, result.localY }, mouse_event.buttons(), mouse_event.button());
|
||||
auto local_event = make<GMouseEvent>(event.type(), Point { result.localX, result.localY }, mouse_event.buttons(), mouse_event.button(), mouse_event.modifiers());
|
||||
ASSERT(result.widget);
|
||||
set_hovered_widget(result.widget);
|
||||
if (result.widget != m_global_cursor_tracking_widget.ptr())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue