From bde9c2bc65df955a12dd1270016de8a3aa1a50b4 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Wed, 24 Nov 2021 13:12:09 +0100 Subject: [PATCH] LibGUI: Add GUI::Window::try_add_menu() This is a fallible variant of add_menu() that returns ErrorOr. --- Userland/Libraries/LibGUI/Window.cpp | 14 ++++++++++---- Userland/Libraries/LibGUI/Window.h | 1 + 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> 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); Menu& add_menu(String name); + ErrorOr> try_add_menu(String name); void flush_pending_paints_immediately();