LibGUI: Consider carriage returns when counting lines in a label

We create labels in the Browser from text on web documents, which may
use carriage returns. LibGfx will split lines on CR already, but LibGUI
would not consider CRs when computing the height of the containing
widget. The result was text that would not fit in the label's box.
This commit is contained in:
Timothy Flynn 2024-03-08 10:02:20 -05:00 committed by Tim Flynn
parent 82ea53cf10
commit 2a021a35fc
Notes: sideshowbarker 2024-07-17 06:09:44 +09:00
2 changed files with 3 additions and 3 deletions

View File

@ -29,9 +29,9 @@ public:
{
m_label->set_text(move(tooltip));
int tooltip_width = m_label->effective_min_size().width().as_int() + 10;
int line_count = m_label->text().count("\n"sv);
int line_count = m_label->text().bytes_as_string_view().count_lines();
int font_size = m_label->font().pixel_size_rounded_up();
int tooltip_height = font_size * (1 + line_count) + ((font_size + 1) / 2) * line_count + 8;
int tooltip_height = font_size * line_count + ((font_size + 1) / 2) * (line_count - 1) + 8;
Gfx::IntRect desktop_rect = Desktop::the().rect();
if (tooltip_width > desktop_rect.width())

View File

@ -96,7 +96,7 @@ int Label::text_calculated_preferred_width() const
int Label::text_calculated_preferred_height() const
{
return static_cast<int>(ceilf(font().preferred_line_height()) * (m_text.count("\n"sv) + 1));
return static_cast<int>(ceilf(font().preferred_line_height()) * m_text.bytes_as_string_view().count_lines());
}
Optional<UISize> Label::calculated_preferred_size() const