- if ((State->CurrentSelection < State->LastVisible) && (State->CurrentSelection >= State->FirstVisible)) {
- DrawMainMenuEntry(Screen->Entries[State->PreviousSelection], FALSE,
- itemPosX[State->PreviousSelection - State->FirstVisible],
- (Screen->Entries[State->PreviousSelection]->Row == 0) ? row0PosY : row1PosY);
- DrawMainMenuEntry(Screen->Entries[State->CurrentSelection], TRUE,
- itemPosX[State->CurrentSelection - State->FirstVisible],
- (Screen->Entries[State->CurrentSelection]->Row == 0) ? row0PosY : row1PosY);
+ UINTN XSelectPrev, XSelectCur, YPosPrev, YPosCur;
+
+ if (((State->CurrentSelection <= State->LastVisible) && (State->CurrentSelection >= State->FirstVisible)) ||
+ (State->CurrentSelection >= State->InitialRow1) ) {
+ if (Screen->Entries[State->PreviousSelection]->Row == 0) {
+ XSelectPrev = State->PreviousSelection - State->FirstVisible;
+ YPosPrev = row0PosY;
+ } else {
+ XSelectPrev = State->PreviousSelection;
+ YPosPrev = row1PosY;
+ } // if/else
+ if (Screen->Entries[State->CurrentSelection]->Row == 0) {
+ XSelectCur = State->CurrentSelection - State->FirstVisible;
+ YPosCur = row0PosY;
+ } else {
+ XSelectCur = State->CurrentSelection;
+ YPosCur = row1PosY;
+ } // if/else
+ DrawMainMenuEntry(Screen->Entries[State->PreviousSelection], FALSE, itemPosX[XSelectPrev], YPosPrev);
+ DrawMainMenuEntry(Screen->Entries[State->CurrentSelection], TRUE, itemPosX[XSelectCur], YPosCur);