From 01cefa83aa1d5444ce917ca98e5888aa50a9f815 Mon Sep 17 00:00:00 2001 From: Shannon Booth Date: Tue, 11 Feb 2020 22:14:35 +1300 Subject: [PATCH] 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. --- Servers/WindowServer/Menu.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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;