Browse Source

LibGUI: Add GUI::Window::try_add_menu()

This is a fallible variant of add_menu() that returns ErrorOr.
Andreas Kling 3 years ago
parent
commit
bde9c2bc65
2 changed files with 11 additions and 4 deletions
  1. 10 4
      Userland/Libraries/LibGUI/Window.cpp
  2. 1 0
      Userland/Libraries/LibGUI/Window.h

+ 10 - 4
Userland/Libraries/LibGUI/Window.cpp

@@ -1188,16 +1188,22 @@ Gfx::Bitmap* Window::back_bitmap()
     return m_back_store ? &m_back_store->bitmap() : nullptr;
     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) {
     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;
     return menu;
 }
 }
 
 
+Menu& Window::add_menu(String name)
+{
+    auto menu = MUST(try_add_menu(move(name)));
+    return *menu;
+}
+
 bool Window::is_modified() const
 bool Window::is_modified() const
 {
 {
     if (!m_window_id)
     if (!m_window_id)

+ 1 - 0
Userland/Libraries/LibGUI/Window.h

@@ -202,6 +202,7 @@ public:
     void did_disable_focused_widget(Badge<Widget>);
     void did_disable_focused_widget(Badge<Widget>);
 
 
     Menu& add_menu(String name);
     Menu& add_menu(String name);
+    ErrorOr<NonnullRefPtr<Menu>> try_add_menu(String name);
 
 
     void flush_pending_paints_immediately();
     void flush_pending_paints_immediately();