diff --git a/Source/gmenu.cpp b/Source/gmenu.cpp index aeaa9d896..85f4715b5 100644 --- a/Source/gmenu.cpp +++ b/Source/gmenu.cpp @@ -289,10 +289,10 @@ BOOL gmenu_presskeys(int a1) case VK_SPACE: return FALSE; case VK_LEFT: - gmenu_left_right(0); + gmenu_left_right(FALSE); break; case VK_RIGHT: - gmenu_left_right(1); + gmenu_left_right(TRUE); break; case VK_UP: gmenu_up_down(0); @@ -304,27 +304,23 @@ BOOL gmenu_presskeys(int a1) return TRUE; } -void gmenu_left_right(int a1) +void gmenu_left_right(BOOL isRight) { - signed int v1; // edx - unsigned int v2; // eax - int v3; // eax + int plOffset; - v1 = sgpCurrItem->dwFlags; if (sgpCurrItem->dwFlags & 0x40000000) { - v2 = sgpCurrItem->dwFlags & 0xFFF; - if (a1) { - if (v2 == ((v1 >> 12) & 0xFFF)) + plOffset = sgpCurrItem->dwFlags & 0xFFF; + if (isRight) { + if (plOffset == (int)(sgpCurrItem->dwFlags & 0xFFF000) >> 12) return; - v3 = v2 + 1; + plOffset++; } else { - if (!(v1 & 0xFFF)) + if (!plOffset) return; - v3 = v2 - 1; + plOffset--; } - _LOWORD(v1) = v1 & 0xF000; - sgpCurrItem->dwFlags = v1; - sgpCurrItem->dwFlags |= v3; + sgpCurrItem->dwFlags &= 0xFFFFF000; + sgpCurrItem->dwFlags |= plOffset; sgpCurrItem->fnMenu(FALSE); } } diff --git a/Source/gmenu.h b/Source/gmenu.h index 6d876037c..2888b01f1 100644 --- a/Source/gmenu.h +++ b/Source/gmenu.h @@ -25,7 +25,7 @@ void gmenu_draw_menu_item(TMenuItem *pItem, int a2); void gmenu_clear_buffer(int x, int y, int width, int height); int gmenu_get_lfont(TMenuItem *pItem); BOOL gmenu_presskeys(int a1); -void gmenu_left_right(int a1); +void gmenu_left_right(BOOL isRight); BOOL gmenu_on_mouse_move(); BOOLEAN gmenu_valid_mouse_pos(int *plOffset); int gmenu_left_mouse(int a1);