diff options
Diffstat (limited to 'Userland/Services/WindowServer/MenuManager.cpp')
-rw-r--r-- | Userland/Services/WindowServer/MenuManager.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/Userland/Services/WindowServer/MenuManager.cpp b/Userland/Services/WindowServer/MenuManager.cpp index ad0750c637..83dbbe72ea 100644 --- a/Userland/Services/WindowServer/MenuManager.cpp +++ b/Userland/Services/WindowServer/MenuManager.cpp @@ -68,11 +68,12 @@ void MenuManager::event(Core::Event& event) if (auto* shortcut_item_indices = m_current_menu->items_with_alt_shortcut(key_event.code_point())) { VERIFY(!shortcut_item_indices->is_empty()); - // FIXME: If there are multiple items with the same Alt shortcut, we should cycle through them - // with each keypress instead of activating immediately. - auto index = shortcut_item_indices->at(0); + auto it = shortcut_item_indices->find_if([&](int const& i) { return i > m_current_menu->hovered_item_index(); }); + auto index = shortcut_item_indices->at(it.is_end() ? 0 : it.index()); auto& item = m_current_menu->item(index); m_current_menu->set_hovered_index(index); + if (shortcut_item_indices->size() > 1) + return; if (item.is_submenu()) m_current_menu->descend_into_submenu_at_hovered_item(); else |