LibWeb: Use the correct DOM node when moving text cursor with mouse

We should use the DOM node returned by the TextCursor hit test,
and not the one we got from the earlier Exact hit test.
This commit is contained in:
Andreas Kling 2021-02-15 23:24:45 +01:00
parent a0e558ce89
commit 2323b6fb74
Notes: sideshowbarker 2024-07-18 22:13:25 +09:00

View File

@ -197,7 +197,7 @@ bool EventHandler::handle_mousedown(const Gfx::IntPoint& position, unsigned butt
if (button == GUI::MouseButton::Left) {
auto result = layout_root()->hit_test(position, Layout::HitTestType::TextCursor);
if (result.layout_node && result.layout_node->dom_node()) {
m_frame.set_cursor_position(DOM::Position(*node, result.index_in_node));
m_frame.set_cursor_position(DOM::Position(*result.layout_node->dom_node(), result.index_in_node));
layout_root()->set_selection({ { result.layout_node, result.index_in_node }, {} });
m_in_mouse_selection = true;
}
@ -262,7 +262,7 @@ bool EventHandler::handle_mousemove(const Gfx::IntPoint& position, unsigned butt
if (m_in_mouse_selection) {
auto hit = layout_root()->hit_test(position, Layout::HitTestType::TextCursor);
if (hit.layout_node && hit.layout_node->dom_node()) {
m_frame.set_cursor_position(DOM::Position(*node, result.index_in_node));
m_frame.set_cursor_position(DOM::Position(*hit.layout_node->dom_node(), result.index_in_node));
layout_root()->set_selection_end({ hit.layout_node, hit.index_in_node });
}
if (auto* page = m_frame.page())