Serenity Operating System
at master 42 lines 952 B view raw
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}