diff --git a/Servers/WindowServer/Menu.cpp b/Servers/WindowServer/Menu.cpp index e1f6fcba1d..56874ce210 100644 --- a/Servers/WindowServer/Menu.cpp +++ b/Servers/WindowServer/Menu.cpp @@ -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;