mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-12-28 05:35:52 +03:00
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:
parent
82ea53cf10
commit
2a021a35fc
Notes:
sideshowbarker
2024-07-17 06:09:44 +09:00
Author: https://github.com/trflynn89 Commit: https://github.com/SerenityOS/serenity/commit/2a021a35fc Pull-request: https://github.com/SerenityOS/serenity/pull/23525 Reviewed-by: https://github.com/LucasChollet ✅
@ -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())
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user