From 9a05175a88bcff7ed461d67fc78ef354b7f12f67 Mon Sep 17 00:00:00 2001 From: Cody Hein Date: Tue, 3 Jan 2023 13:22:08 -0700 Subject: [PATCH] WindowServer: Do not add existing menu items (by ptr) to m_menus This resolves a fixme requesting that we do not add duplicate menus --- Userland/Services/WindowServer/Menubar.h | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Userland/Services/WindowServer/Menubar.h b/Userland/Services/WindowServer/Menubar.h index d05b18dcf0..3e5ee3fa7c 100644 --- a/Userland/Services/WindowServer/Menubar.h +++ b/Userland/Services/WindowServer/Menubar.h @@ -18,7 +18,20 @@ class Menubar { public: void add_menu(Menu& menu, Gfx::IntRect window_rect) { - // FIXME: Check against duplicate menu additions. + bool duplicate_menu_detected = false; + + for_each_menu([&](Menu& existing_menu) { + if (&menu == &existing_menu) { + dbgln("Duplicate Menu \"{}\" ({})", menu.name(), &menu); + duplicate_menu_detected = true; + return IterationDecision::Break; + } + return IterationDecision::Continue; + }); + if (duplicate_menu_detected) { + return; + } + m_menus.append(menu); layout_menu(menu, window_rect); }