From e3bfe0b5095e9a0bdeb73d8f72bab3138f4494bf Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 26 Aug 2020 21:00:26 +0200 Subject: LibWeb: Fix sometimes missing text selection highlight There's no selection if it starts and ends at the same column, but only if both columns are in the same node. :^) --- Libraries/LibWeb/Layout/LineBoxFragment.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'Libraries') diff --git a/Libraries/LibWeb/Layout/LineBoxFragment.cpp b/Libraries/LibWeb/Layout/LineBoxFragment.cpp index 118ea3bc35..05332f8007 100644 --- a/Libraries/LibWeb/Layout/LineBoxFragment.cpp +++ b/Libraries/LibWeb/Layout/LineBoxFragment.cpp @@ -116,9 +116,6 @@ Gfx::FloatRect LineBoxFragment::selection_rect(const Gfx::Font& font) const const auto end_index = m_start + m_length; auto text = this->text(); - if (selection.start().index_in_node == selection.end().index_in_node) - return {}; - if (layout_node().selection_state() == LayoutNode::SelectionState::StartAndEnd) { // we are in the start/end node (both the same) if (start_index > selection.end().index_in_node) @@ -126,6 +123,9 @@ Gfx::FloatRect LineBoxFragment::selection_rect(const Gfx::Font& font) const if (end_index < selection.start().index_in_node) return {}; + if (selection.start().index_in_node == selection.end().index_in_node) + return {}; + auto selection_start_in_this_fragment = max(0, selection.start().index_in_node - m_start); auto selection_end_in_this_fragment = min(m_length, selection.end().index_in_node - m_start); auto pixel_distance_to_first_selected_character = font.width(text.substring_view(0, selection_start_in_this_fragment)); -- cgit v1.2.3