LibGUI: Make Action::set_text() update any associated menu items

Now you can change the text of an action and it will actually show
up in the menu. :^)
This commit is contained in:
Andreas Kling 2021-05-08 21:15:38 +02:00
parent 161568103e
commit bfd2ec88f4
Notes: sideshowbarker 2024-07-18 18:28:48 +09:00
3 changed files with 13 additions and 1 deletions

View file

@ -343,4 +343,14 @@ void Action::set_icon(const Gfx::Bitmap* icon)
m_icon = icon;
}
void Action::set_text(String text)
{
if (m_text == text)
return;
m_text = move(text);
for_each_menu_item([&](auto& menu_item) {
menu_item.update_from_action({});
});
}
}

View file

@ -66,7 +66,7 @@ public:
virtual ~Action() override;
String text() const { return m_text; }
void set_text(String text) { m_text = move(text); }
void set_text(String);
String const& status_tip() const { return m_status_tip; }
void set_status_tip(String status_tip) { m_status_tip = move(status_tip); }

View file

@ -50,6 +50,8 @@ public:
void set_menu_id(Badge<Menu>, unsigned menu_id);
void set_identifier(Badge<Menu>, unsigned identifier);
void update_from_action(Badge<Action>) { update_window_server(); }
private:
void update_window_server();