From b2df863b550b07002db0f08a04de10f7676edf3e Mon Sep 17 00:00:00 2001 From: thankyouverycool <66646555+thankyouverycool@users.noreply.github.com> Date: Wed, 2 Feb 2022 19:20:09 -0500 Subject: [PATCH] LibGUI: Adjust TextEditor's clipping rect for text And simplify its construction. The first visual line was being over-clipped vertically by an amount equal to the frame's thickness. Selections and icons in TextBoxes and the first line of Editors now display correctly. --- Userland/Libraries/LibGUI/TextEditor.cpp | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/Userland/Libraries/LibGUI/TextEditor.cpp b/Userland/Libraries/LibGUI/TextEditor.cpp index 7729240bc1..bec89a9b17 100644 --- a/Userland/Libraries/LibGUI/TextEditor.cpp +++ b/Userland/Libraries/LibGUI/TextEditor.cpp @@ -370,12 +370,12 @@ Gfx::IntRect TextEditor::gutter_content_rect(size_t line_index) const Gfx::IntRect TextEditor::ruler_rect_in_inner_coordinates() const { - return { gutter_width(), 0, ruler_width(), height() - height_occupied_by_horizontal_scrollbar() }; + return { gutter_width(), 0, ruler_width(), widget_inner_rect().height() }; } Gfx::IntRect TextEditor::gutter_rect_in_inner_coordinates() const { - return { 0, 0, gutter_width(), height() - height_occupied_by_horizontal_scrollbar() }; + return { 0, 0, gutter_width(), widget_inner_rect().height() }; } Gfx::IntRect TextEditor::visible_text_rect_in_inner_coordinates() const @@ -474,19 +474,8 @@ void TextEditor::paint_event(PaintEvent& event) } } - auto text_left = 0; - if (m_ruler_visible) - text_left = ruler_rect_in_inner_coordinates().right() + 1; - else if (m_gutter_visible) - text_left = gutter_rect_in_inner_coordinates().right() + 1; - text_left += frame_thickness(); - - Gfx::IntRect text_clip_rect { - 0, - frame_thickness(), - width() - width_occupied_by_vertical_scrollbar() - text_left, - height() - height_occupied_by_horizontal_scrollbar() - }; + auto gutter_ruler_width = gutter_width() + ruler_width(); + Gfx::IntRect text_clip_rect { 0, 0, widget_inner_rect().width() - gutter_ruler_width, widget_inner_rect().height() }; text_clip_rect.translate_by(horizontal_scrollbar().value(), vertical_scrollbar().value()); painter.add_clip_rect(text_clip_rect);