WindowServer: Ensure on a menu key press invalid items are not hovered

Whenever a new menu item is hovered through a up or down key press, we
should always end up hovering a valid item.
This commit is contained in:
Shannon Booth 2020-02-11 22:14:35 +13:00 committed by Andreas Kling
parent 7b6d450b6a
commit 01cefa83aa
Notes: sideshowbarker 2024-07-19 09:26:53 +09:00

View file

@ -399,12 +399,12 @@ void Menu::event(Core::Event& event)
do {
if (m_hovered_item_index == 0)
m_hovered_item_index = m_items.size() - 1;
else if (m_hovered_item_index < 0)
return;
else
--m_hovered_item_index;
} while (hovered_item()->type() == MenuItem::Separator);
ASSERT(m_hovered_item_index >= 0 && m_hovered_item_index <= m_items.size() - 1);
if (is_scrollable() && m_hovered_item_index < m_scroll_offset)
--m_scroll_offset;
@ -421,12 +421,12 @@ void Menu::event(Core::Event& event)
do {
if (m_hovered_item_index == m_items.size() - 1)
m_hovered_item_index = 0;
else if (m_hovered_item_index > m_items.size() - 1)
return;
else
++m_hovered_item_index;
} while (hovered_item()->type() == MenuItem::Separator);
ASSERT(m_hovered_item_index >= 0 && m_hovered_item_index <= m_items.size() - 1);
if (is_scrollable() && m_hovered_item_index >= (m_scroll_offset + visible_item_count()))
++m_scroll_offset;