mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 20:47:45 +00:00
WindowServer: Skip over disabled menu items during keyboard navigation
This commit is contained in:
parent
4218b00cb4
commit
cbb3c7aade
1 changed files with 8 additions and 2 deletions
|
@ -406,12 +406,15 @@ void Menu::event(Core::Event& event)
|
||||||
if (is_scrollable() && m_hovered_item_index == 0)
|
if (is_scrollable() && m_hovered_item_index == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
auto original_index = m_hovered_item_index;
|
||||||
do {
|
do {
|
||||||
if (m_hovered_item_index == 0)
|
if (m_hovered_item_index == 0)
|
||||||
m_hovered_item_index = m_items.size() - 1;
|
m_hovered_item_index = m_items.size() - 1;
|
||||||
else
|
else
|
||||||
--m_hovered_item_index;
|
--m_hovered_item_index;
|
||||||
} while (hovered_item()->type() == MenuItem::Separator);
|
if (m_hovered_item_index == original_index)
|
||||||
|
return;
|
||||||
|
} while (hovered_item()->type() == MenuItem::Separator || !hovered_item()->is_enabled());
|
||||||
|
|
||||||
ASSERT(m_hovered_item_index >= 0 && m_hovered_item_index <= static_cast<int>(m_items.size()) - 1);
|
ASSERT(m_hovered_item_index >= 0 && m_hovered_item_index <= static_cast<int>(m_items.size()) - 1);
|
||||||
|
|
||||||
|
@ -428,12 +431,15 @@ void Menu::event(Core::Event& event)
|
||||||
if (is_scrollable() && m_hovered_item_index == static_cast<int>(m_items.size()) - 1)
|
if (is_scrollable() && m_hovered_item_index == static_cast<int>(m_items.size()) - 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
auto original_index = m_hovered_item_index;
|
||||||
do {
|
do {
|
||||||
if (m_hovered_item_index == static_cast<int>(m_items.size()) - 1)
|
if (m_hovered_item_index == static_cast<int>(m_items.size()) - 1)
|
||||||
m_hovered_item_index = 0;
|
m_hovered_item_index = 0;
|
||||||
else
|
else
|
||||||
++m_hovered_item_index;
|
++m_hovered_item_index;
|
||||||
} while (hovered_item()->type() == MenuItem::Separator);
|
if (m_hovered_item_index == original_index)
|
||||||
|
return;
|
||||||
|
} while (hovered_item()->type() == MenuItem::Separator || !hovered_item()->is_enabled());
|
||||||
|
|
||||||
ASSERT(m_hovered_item_index >= 0 && m_hovered_item_index <= static_cast<int>(m_items.size()) - 1);
|
ASSERT(m_hovered_item_index >= 0 && m_hovered_item_index <= static_cast<int>(m_items.size()) - 1);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue