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:
parent
1de1d6423b
commit
e20756f9f7
4 changed files with 23 additions and 12 deletions
|
@ -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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue