Serenity Operating System
1/*
2 * Copyright (c) 2018-2021, Andreas Kling <kling@serenityos.org>
3 * Copyright (c) 2021, sin-ack <sin-ack@protonmail.com>
4 * Copyright (c) 2022, the SerenityOS developers.
5 *
6 * SPDX-License-Identifier: BSD-2-Clause
7 */
8
9#include <LibGUI/Menubar.h>
10
11namespace GUI {
12
13ErrorOr<void> Menubar::try_add_menu(Badge<Window>, NonnullRefPtr<Menu> menu)
14{
15 TRY(m_menus.try_append(menu));
16 return {};
17}
18
19ErrorOr<NonnullRefPtr<Menu>> Menubar::try_add_menu(Badge<Window>, DeprecatedString name)
20{
21 auto menu = TRY(try_add<Menu>(move(name)));
22 TRY(m_menus.try_append(menu));
23 return menu;
24}
25
26Menu& Menubar::add_menu(Badge<Window>, DeprecatedString name)
27{
28 auto& menu = add<Menu>(move(name));
29 m_menus.append(menu);
30 return menu;
31}
32
33void Menubar::for_each_menu(Function<IterationDecision(Menu&)> callback)
34{
35 for (auto& menu : m_menus) {
36 if (callback(menu) == IterationDecision::Break) {
37 return;
38 }
39 }
40}
41
42}