LibGUI: Parse ampersand string for tooltips only in GUI::Action

It seems unnecessary to pass every tooltip string through
Gfx::parse_ampersand_string() when only Action tooltips need to parse a
title.
This commit is contained in:
Karol Kosek 2023-06-03 22:54:11 +02:00 committed by Andreas Kling
parent aea244efe1
commit 16defb4806
Notes: sideshowbarker 2024-07-17 03:16:02 +09:00
4 changed files with 8 additions and 3 deletions

View file

@ -297,6 +297,11 @@ void Action::set_text(DeprecatedString text)
});
}
DeprecatedString Action::tooltip() const
{
return m_tooltip.value_or_lazy_evaluated([this] { return Gfx::parse_ampersand_string(m_text); });
}
void Action::set_tooltip(DeprecatedString tooltip)
{
if (m_tooltip == tooltip)

View file

@ -84,7 +84,7 @@ public:
DeprecatedString text() const { return m_text; }
void set_text(DeprecatedString);
DeprecatedString tooltip() const { return m_tooltip.value_or(m_text); }
DeprecatedString tooltip() const;
void set_tooltip(DeprecatedString);
Optional<String> status_tip() const;

View file

@ -27,7 +27,7 @@ class Application::TooltipWindow final : public Window {
public:
void set_tooltip(DeprecatedString const& tooltip)
{
m_label->set_text(String::from_deprecated_string(Gfx::parse_ampersand_string(tooltip)).release_value_but_fixme_should_propagate_errors());
m_label->set_text(String::from_deprecated_string(tooltip).release_value_but_fixme_should_propagate_errors());
int tooltip_width = m_label->effective_min_size().width().as_int() + 10;
int line_count = m_label->text().count("\n"sv);
int font_size = m_label->font().pixel_size_rounded_up();

View file

@ -67,7 +67,7 @@ EmojiInputDialog::EmojiInputDialog(Window* parent_window)
for (auto const& category : s_emoji_groups) {
auto name = Unicode::emoji_group_to_string(category.group);
auto tooltip = name.replace("&"sv, "&&"sv, ReplaceMode::FirstOnly);
DeprecatedString tooltip = name;
auto set_filter_action = Action::create_checkable(
category.representative_emoji,