1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 14:37:46 +00:00

LibGUI: Share code for finding an Action by Shortcut

This moves logic for finding a shortcut on a Window or Widget to
Action::find_action_for_shortcut instead.
This commit is contained in:
Zaggy1024 2022-10-24 19:04:32 -05:00 committed by Sam Atkins
parent 025c16a6f9
commit 8e7c7e0a2a
4 changed files with 17 additions and 18 deletions

View file

@ -63,6 +63,19 @@ NonnullRefPtr<Action> Action::create_checkable(String text, Shortcut const& shor
return adopt_ref(*new Action(move(text), shortcut, Shortcut {}, move(icon), move(callback), parent, true));
}
RefPtr<Action> Action::find_action_for_shortcut(Core::Object& object, Shortcut const& shortcut)
{
RefPtr<Action> found_action = nullptr;
object.for_each_child_of_type<Action>([&](auto& action) {
if (action.shortcut() == shortcut || action.alternate_shortcut() == shortcut) {
found_action = &action;
return IterationDecision::Break;
}
return IterationDecision::Continue;
});
return found_action;
}
Action::Action(String text, Function<void(Action&)> on_activation_callback, Core::Object* parent, bool checkable)
: Action(move(text), Shortcut {}, Shortcut {}, nullptr, move(on_activation_callback), parent, checkable)
{