LibGUI: Allow buttons to control the behavior when their text changes

Some buttons control how their text is set in unique ways. For example,
GUI::ToolbarButton will set only its tooltip instead of its text if it
has an icon. So when the text changes, ToolbarButton will want to change
its tooltip instead.
This commit is contained in:
Timothy Flynn 2022-11-19 09:45:05 -05:00 committed by Andreas Kling
parent 62cbfc68b9
commit 234ae3a2ae
Notes: sideshowbarker 2024-07-17 17:49:11 +09:00
2 changed files with 12 additions and 1 deletions

View file

@ -20,7 +20,7 @@ public:
Function<void(bool)> on_checked;
void set_text(String);
virtual void set_text(String);
String const& text() const { return m_text; }
bool is_exclusive() const { return m_exclusive; }

View file

@ -59,6 +59,17 @@ private:
set_text(action.text());
set_button_style(Gfx::ButtonStyle::Coolbar);
}
virtual void set_text(String text) override
{
auto const* action = this->action();
VERIFY(action);
set_tooltip(tooltip(*action));
if (!action->icon())
Button::set_text(move(text));
}
String tooltip(Action const& action) const
{
StringBuilder builder;