diff --git a/WindowServer/WSMenu.h b/WindowServer/WSMenu.h index 24a03587f0c..bd15d02e59e 100644 --- a/WindowServer/WSMenu.h +++ b/WindowServer/WSMenu.h @@ -23,6 +23,7 @@ public: WSMenuBar* menu_bar() { return m_menubar; } const WSMenuBar* menu_bar() const { return m_menubar; } + bool is_empty() const { return m_items.is_empty(); } int item_count() const { return m_items.size(); } WSMenuItem* item(int i) { return m_items[i].ptr(); } const WSMenuItem* item(int i) const { return m_items[i].ptr(); } diff --git a/WindowServer/WSWindowManager.cpp b/WindowServer/WSWindowManager.cpp index 00da34f522f..1fb86b86571 100644 --- a/WindowServer/WSWindowManager.cpp +++ b/WindowServer/WSWindowManager.cpp @@ -387,9 +387,11 @@ void WSWindowManager::handle_menu_mouse_event(WSMenu& menu, WSMouseEvent& event) if (m_current_menu == &menu) return; close_current_menu(); - auto& menu_window = menu.ensure_menu_window(); - menu_window.move_to({ menu.rect_in_menubar().x(), menu.rect_in_menubar().bottom() }); - menu_window.set_visible(true); + if (!menu.is_empty()) { + auto& menu_window = menu.ensure_menu_window(); + menu_window.move_to({ menu.rect_in_menubar().x(), menu.rect_in_menubar().bottom() }); + menu_window.set_visible(true); + } m_current_menu = &menu; return; }