X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=dll%2Fwin32%2Fuser32%2Fwindows%2Fmenu.c;h=34eaac9825c612182c126ecd7a6f52249857dd6b;hp=3408d73c3b4cdce155fde7082e66666ba54f2835;hb=b726d7355f0aa394852fa8c56e59cfc9bbc4293c;hpb=9ab4e6808d239977bcba0066e3ca3a64bec5d64b diff --git a/dll/win32/user32/windows/menu.c b/dll/win32/user32/windows/menu.c index 3408d73c3b4..34eaac9825c 100644 --- a/dll/win32/user32/windows/menu.c +++ b/dll/win32/user32/windows/menu.c @@ -511,57 +511,46 @@ static UINT FASTCALL MenuFindItemByKey(HWND WndOwner, PROSMENUINFO MenuInfo, TRACE("\tlooking for '%c' (0x%02x) in [%p]\n", (char) Key, Key, MenuInfo); if (NULL == MenuInfo || ! IsMenu(MenuInfo->Self)) - { + { if (MenuGetRosMenuInfo(&SysMenuInfo, GetSystemMenu(WndOwner, FALSE))) - { + { MenuInfo = &SysMenuInfo; - } + } else - { + { MenuInfo = NULL; - } - } + } + } if (NULL != MenuInfo) - { + { if (MenuGetAllRosMenuItemInfo(MenuInfo->Self, &Items) <= 0) - { + { return -1; - } - if (! ForceMenuChar) - { - Key = toupperW(Key); + } + if ( !ForceMenuChar ) + { ItemInfo = Items; for (i = 0; i < MenuInfo->MenuItemCount; i++, ItemInfo++) - { + { if ((ItemInfo->lpstr) && NULL != ItemInfo->dwTypeData) - { + { WCHAR *p = (WCHAR *) ItemInfo->dwTypeData - 2; do - { - p = strchrW(p + 2, '&'); - } - while (NULL != p && L'&' == p[1]); - if (NULL != p && (toupperW(p[1]) == Key)) - { - return i; - } - } - } - } + { + p = strchrW (p + 2, '&'); + } + while (p != NULL && p [1] == '&'); + if (p && (toupperW(p[1]) == toupperW(Key))) return i; + } + } + } MenuChar = SendMessageW(WndOwner, WM_MENUCHAR, MAKEWPARAM(Key, MenuInfo->Flags), (LPARAM) MenuInfo->Self); - if (2 == HIWORD(MenuChar)) - { - return LOWORD(MenuChar); - } - if (1 == HIWORD(MenuChar)) - { - return (UINT) (-2); - } + if (HIWORD(MenuChar) == MNC_EXECUTE) return LOWORD(MenuChar); + if (HIWORD(MenuChar) == MNC_CLOSE) return (UINT)(-2); } - return (UINT)(-1); } @@ -1576,12 +1565,12 @@ static BOOL FASTCALL MenuShowPopup(HWND hwndOwner, HMENU hmenu, UINT id, UINT fl MenuInfo.FocusedItem = NO_SELECTED_ITEM; } - /* ReactOS Check */ - if (!ValidateHwnd(hwndOwner)) - { // This window maybe already DEAD!!! + /* store the owner for DrawItem */ + if (!IsWindow(hwndOwner)) + { + SetLastError( ERROR_INVALID_WINDOW_HANDLE ); return FALSE; } - /* store the owner for DrawItem */ MenuInfo.WndOwner = hwndOwner; MenuSetRosMenuInfo(&MenuInfo); @@ -3673,7 +3662,7 @@ VOID MenuTrackKbdMenuBar(HWND hwnd, UINT wParam, WCHAR wChar) if( uItem == NO_SELECTED_ITEM ) MenuMoveSelection( hwnd, &MenuInfo, ITEM_NEXT ); else - PostMessageW( hwnd, WM_KEYDOWN, VK_DOWN, 0L ); + PostMessageW( hwnd, WM_KEYDOWN, VK_RETURN, 0 ); } track_menu: