Index: base/applications/rapps/winmain.c =================================================================== --- base/applications/rapps/winmain.c (revision 54619) +++ base/applications/rapps/winmain.c (working copy) @@ -73,7 +73,7 @@ if (RegCreateKeyExW(HKEY_LOCAL_MACHINE, L"Software\\ReactOS\\rapps", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE, NULL, &hKey, NULL) == ERROR_SUCCESS) { - RegSetValueEx(hKey, L"Settings", 0, REG_BINARY, (LPBYTE)&SettingsInfo, sizeof(SETTINGS_INFO)); + RegSetValueExW(hKey, L"Settings", 0, REG_BINARY, (LPBYTE)&SettingsInfo, sizeof(SETTINGS_INFO)); RegCloseKey(hKey); } } @@ -626,21 +626,29 @@ } break; - case LVN_KEYDOWN: + case LVN_ITEMCHANGED: { - LPNMLVKEYDOWN pnkd = (LPNMLVKEYDOWN) lParam; + LPNMLISTVIEW pnic = (LPNMLISTVIEW) lParam; - if (pnkd->hdr.hwndFrom == hListView) + if (pnic->hdr.hwndFrom == hListView) { - INT ItemIndex = (INT) SendMessage(hListView, LVM_GETNEXTITEM, -1, LVNI_FOCUSED); + // Check if this is a valid item + // (technically, it can be also an unselect) + INT ItemIndex = pnic->iItem; + if (ListView_GetItemCount(pnic->hdr.hwndFrom) <= ItemIndex || + ItemIndex == -1) + break; - if (pnkd->wVKey == VK_UP) ItemIndex -= 1; - if (pnkd->wVKey == VK_DOWN) ItemIndex += 1; - - if (IS_INSTALLED_ENUM(SelectedEnumType)) - ShowInstalledAppInfo(ItemIndex); - if (IS_AVAILABLE_ENUM(SelectedEnumType)) - ShowAvailableAppInfo(ItemIndex); + // Check if the focus has been moved to another item + if ((pnic->uChanged & LVIF_STATE) && + (pnic->uNewState & LVIS_FOCUSED) && + !(pnic->uOldState & LVIS_FOCUSED)) + { + if (IS_INSTALLED_ENUM(SelectedEnumType)) + ShowInstalledAppInfo(ItemIndex); + if (IS_AVAILABLE_ENUM(SelectedEnumType)) + ShowAvailableAppInfo(ItemIndex); + } } } break; Index: base/applications/rapps/listview.c =================================================================== --- base/applications/rapps/listview.c (revision 54619) +++ base/applications/rapps/listview.c (working copy) @@ -103,7 +103,7 @@ hListView = CreateWindowExW(WS_EX_CLIENTEDGE, WC_LISTVIEWW, L"", - WS_CHILD | WS_VISIBLE | LVS_SORTASCENDING | LVS_REPORT | LVS_SINGLESEL, + WS_CHILD | WS_VISIBLE | LVS_SORTASCENDING | LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS, 205, 28, 465, 250, hwnd, NULL,