diff --git a/Userland/Libraries/LibGUI/CMakeLists.txt b/Userland/Libraries/LibGUI/CMakeLists.txt index 1648dc9634..026acc0966 100644 --- a/Userland/Libraries/LibGUI/CMakeLists.txt +++ b/Userland/Libraries/LibGUI/CMakeLists.txt @@ -62,6 +62,7 @@ set(SOURCES ListView.cpp Menu.cpp MenuItem.cpp + Menubar.cpp MessageBox.cpp Model.cpp ModelIndex.cpp diff --git a/Userland/Libraries/LibGUI/Menubar.cpp b/Userland/Libraries/LibGUI/Menubar.cpp new file mode 100644 index 0000000000..69fdb27f13 --- /dev/null +++ b/Userland/Libraries/LibGUI/Menubar.cpp @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2018-2021, Andreas Kling + * Copyright (c) 2021, sin-ack + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include + +namespace GUI { + +Menubar::Menubar() +{ +} + +Menubar::~Menubar() +{ +} + +ErrorOr> Menubar::try_add_menu(Badge, String name) +{ + auto menu = TRY(try_add(move(name))); + TRY(m_menus.try_append(menu)); + return menu; +} + +Menu& Menubar::add_menu(Badge, String name) +{ + auto& menu = add(move(name)); + m_menus.append(menu); + return menu; +} + +void Menubar::for_each_menu(Function callback) +{ + for (auto& menu : m_menus) { + if (callback(menu) == IterationDecision::Break) { + return; + } + } +} + +} diff --git a/Userland/Libraries/LibGUI/Menubar.h b/Userland/Libraries/LibGUI/Menubar.h index 42d97b7b91..71e1b35416 100644 --- a/Userland/Libraries/LibGUI/Menubar.h +++ b/Userland/Libraries/LibGUI/Menubar.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2020, Andreas Kling + * Copyright (c) 2018-2021, Andreas Kling * Copyright (c) 2021, sin-ack * * SPDX-License-Identifier: BSD-2-Clause @@ -20,26 +20,15 @@ class Menubar : public Core::Object { C_OBJECT(Menubar); public: - ~Menubar() { } + virtual ~Menubar() override; - Menu& add_menu(Badge, String name) - { - auto& menu = add(move(name)); - m_menus.append(menu); - return menu; - } + ErrorOr> try_add_menu(Badge, String name); + Menu& add_menu(Badge, String name); - void for_each_menu(Function callback) - { - for (auto& menu : m_menus) { - if (callback(menu) == IterationDecision::Break) { - return; - } - } - } + void for_each_menu(Function); private: - Menubar() { } + Menubar(); NonnullRefPtrVector m_menus; };