Fix menu up/down when menumask disables first entry (#902)
This commit is contained in:
53
menu.cpp
53
menu.cpp
@@ -1278,37 +1278,38 @@ void HandleUI(void)
|
||||
{
|
||||
if (down)
|
||||
{
|
||||
if((menumask >= ((uint64_t)1 << (menusub + 1)))) // Any active entries left?
|
||||
{
|
||||
do
|
||||
{
|
||||
menusub++;
|
||||
} while ((menumask & ((uint64_t)1 << menusub)) == 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
menusub = 0; // jump to first item
|
||||
}
|
||||
if((menumask >= ((uint64_t)1 << (menusub + 1)))) // Any active entries left?
|
||||
{
|
||||
do
|
||||
{
|
||||
menusub++;
|
||||
} while ((menumask & ((uint64_t)1 << menusub)) == 0);
|
||||
} else {
|
||||
menusub = 0; // jump to first item
|
||||
while ((menumask & ((uint64_t)1 << menusub )) == 0) menusub++;
|
||||
}
|
||||
|
||||
menustate = parentstate;
|
||||
menustate = parentstate;
|
||||
}
|
||||
|
||||
if (up)
|
||||
{
|
||||
if (menusub > 0)
|
||||
{
|
||||
do
|
||||
{
|
||||
--menusub;
|
||||
} while ((menumask & ((uint64_t)1 << menusub)) == 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
do
|
||||
{
|
||||
menusub++;
|
||||
} while ((menumask & ((uint64_t)(~0) << (menusub + 1))) != 0); // jump to last item
|
||||
}
|
||||
if (menusub > 0)
|
||||
{
|
||||
do
|
||||
{
|
||||
--menusub;
|
||||
} while (menusub != 0 && (menumask & ((uint64_t)1 << menusub)) == 0);
|
||||
if (menusub == 0 && (menumask & 1) == 0) { //If the first menu entry is disabled...
|
||||
while ((menumask & ((uint64_t)(~0) << (menusub + 1))) != 0) menusub++;
|
||||
//Go to to last item
|
||||
}
|
||||
} else {
|
||||
do
|
||||
{
|
||||
menusub++;
|
||||
} while ((menumask & ((uint64_t)(~0) << (menusub + 1))) != 0); // jump to last item
|
||||
}
|
||||
menustate = parentstate;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user