WindowServer: Cycle through menu items with the same Alt shortcut

If there are multiple items with the same Alt shortcut, cycle through
them with each keypress instead of activating immediately.
This commit is contained in:
Sergiy Stupar 2022-11-07 20:17:38 +02:00 committed by Andreas Kling
commit 288d75fdab
Notes: sideshowbarker 2024-07-17 04:40:38 +09:00
2 changed files with 5 additions and 3 deletions

View file

@ -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