1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 19:08:10 +00:00

LibGUI: Update buttons' text/tooltips in Action::set_text

This allows Actions that change based on some state to update their
associated buttons' text and tooltips to match their new text. The
play/pause button in SoundPlayer (and VideoPlayer if it's merged)
will now change tooltips when the playback changes state, rather than
always displaying "Play (Space)".
This commit is contained in:
Zaggy1024 2022-10-30 04:32:51 -05:00 committed by Andreas Kling
parent 1de1d6423b
commit e20756f9f7
4 changed files with 23 additions and 12 deletions

View file

@ -169,6 +169,25 @@ void Button::set_action(Action& action)
set_checkable(action.is_checkable());
if (action.is_checkable())
set_checked(action.is_checked());
set_text_from_action();
}
static String create_tooltip_for_action(Action const& action)
{
StringBuilder builder;
builder.append(action.text());
if (action.shortcut().is_valid()) {
builder.append(" ("sv);
builder.append(action.shortcut().to_string());
builder.append(')');
}
return builder.to_string();
}
void Button::set_text_from_action()
{
set_text(action()->text());
set_tooltip(create_tooltip_for_action(*action()));
}
void Button::set_icon(RefPtr<Gfx::Bitmap> icon)