summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibGUI
diff options
context:
space:
mode:
authorAndreas Kling <kling@serenityos.org>2021-11-24 13:12:09 +0100
committerAndreas Kling <kling@serenityos.org>2021-11-24 13:52:01 +0100
commitbde9c2bc65df955a12dd1270016de8a3aa1a50b4 (patch)
treec4243d1613c3363aae7b4817db40863eec02e958 /Userland/Libraries/LibGUI
parent6b79745aa46d7f240b5f671a9716b3231e707457 (diff)
downloadserenity-bde9c2bc65df955a12dd1270016de8a3aa1a50b4.zip
LibGUI: Add GUI::Window::try_add_menu()
This is a fallible variant of add_menu() that returns ErrorOr.
Diffstat (limited to 'Userland/Libraries/LibGUI')
-rw-r--r--Userland/Libraries/LibGUI/Window.cpp14
-rw-r--r--Userland/Libraries/LibGUI/Window.h1
2 files changed, 11 insertions, 4 deletions
diff --git a/Userland/Libraries/LibGUI/Window.cpp b/Userland/Libraries/LibGUI/Window.cpp
index b59cbc1fa6..d0e79ae667 100644
--- a/Userland/Libraries/LibGUI/Window.cpp
+++ b/Userland/Libraries/LibGUI/Window.cpp
@@ -1188,16 +1188,22 @@ Gfx::Bitmap* Window::back_bitmap()
return m_back_store ? &m_back_store->bitmap() : nullptr;
}
-Menu& Window::add_menu(String name)
+ErrorOr<NonnullRefPtr<Menu>> Window::try_add_menu(String name)
{
- Menu& menu = m_menubar->add_menu({}, move(name));
+ auto menu = TRY(m_menubar->try_add_menu({}, move(name)));
if (m_window_id) {
- menu.realize_menu_if_needed();
- WindowServerConnection::the().async_add_menu(m_window_id, menu.menu_id());
+ menu->realize_menu_if_needed();
+ WindowServerConnection::the().async_add_menu(m_window_id, menu->menu_id());
}
return menu;
}
+Menu& Window::add_menu(String name)
+{
+ auto menu = MUST(try_add_menu(move(name)));
+ return *menu;
+}
+
bool Window::is_modified() const
{
if (!m_window_id)
diff --git a/Userland/Libraries/LibGUI/Window.h b/Userland/Libraries/LibGUI/Window.h
index 6723b9ee09..3e5ee31bbf 100644
--- a/Userland/Libraries/LibGUI/Window.h
+++ b/Userland/Libraries/LibGUI/Window.h
@@ -202,6 +202,7 @@ public:
void did_disable_focused_widget(Badge<Widget>);
Menu& add_menu(String name);
+ ErrorOr<NonnullRefPtr<Menu>> try_add_menu(String name);
void flush_pending_paints_immediately();