1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 18:47:34 +00:00

LibGUI: Allow finding the source of a GAction activation

When a GAction is activated by a menu, or by a toolbar button, you can
now use GAction::activator() to get a pointer to whomever activated it.

This can be used to implement context-specific behaviors in situations
where the same action is exposed through multiple paths.

This addresses an issue that was brought up in #826.
This commit is contained in:
Andreas Kling 2019-12-09 21:25:48 +01:00
parent fd5eb79d19
commit 571c4d3fb8
4 changed files with 11 additions and 4 deletions

View file

@ -69,9 +69,12 @@ public:
const GraphicsBitmap* icon() const { return m_icon.ptr(); }
void set_icon(const GraphicsBitmap* icon) { m_icon = icon; }
const CObject* activator() const { return m_activator.ptr(); }
CObject* activator() { return m_activator.ptr(); }
Function<void(GAction&)> on_activation;
void activate();
void activate(CObject* activator = nullptr);
bool is_enabled() const { return m_enabled; }
void set_enabled(bool);
@ -117,4 +120,5 @@ private:
HashTable<GMenuItem*> m_menu_items;
WeakPtr<GWidget> m_widget;
WeakPtr<GActionGroup> m_action_group;
WeakPtr<CObject> m_activator;
};