diff --git a/Libraries/LibWeb/Page/EventHandler.cpp b/Libraries/LibWeb/Page/EventHandler.cpp index 203c5453443..b0706841a31 100644 --- a/Libraries/LibWeb/Page/EventHandler.cpp +++ b/Libraries/LibWeb/Page/EventHandler.cpp @@ -981,8 +981,11 @@ EventResult EventHandler::handle_doubleclick(CSSPixelPoint viewport_position, CS if (hit_dom_node.is_password_input()) { next_boundary = hit_dom_node.length_in_utf16_code_units(); } else { - previous_boundary = hit_dom_node.word_segmenter().previous_boundary(result->index_in_node, Unicode::Segmenter::Inclusive::Yes).value_or(0); - next_boundary = hit_dom_node.word_segmenter().next_boundary(result->index_in_node).value_or(hit_dom_node.length()); + auto& segmenter = word_segmenter(); + segmenter.set_segmented_text(hit_paintable.text_for_rendering()); + + previous_boundary = segmenter.previous_boundary(result->index_in_node, Unicode::Segmenter::Inclusive::Yes).value_or(0); + next_boundary = segmenter.next_boundary(result->index_in_node).value_or(hit_dom_node.length()); } if (auto* target = document.active_input_events_target()) { diff --git a/Tests/LibWeb/Text/expected/selection-on-rendered-text.txt b/Tests/LibWeb/Text/expected/selection-on-rendered-text.txt new file mode 100644 index 00000000000..70b7a952e95 --- /dev/null +++ b/Tests/LibWeb/Text/expected/selection-on-rendered-text.txt @@ -0,0 +1 @@ +Selected range: 6 - 11 diff --git a/Tests/LibWeb/Text/input/selection-on-rendered-text.html b/Tests/LibWeb/Text/input/selection-on-rendered-text.html new file mode 100644 index 00000000000..5907ebb3bf7 --- /dev/null +++ b/Tests/LibWeb/Text/input/selection-on-rendered-text.html @@ -0,0 +1,11 @@ + + +

Lorem ipsum dolor sit amet

+