diff --git a/base/applications/rapps/appview.cpp b/base/applications/rapps/appview.cpp index a34e9cd9cadfe..004e1623c3cd9 100644 --- a/base/applications/rapps/appview.cpp +++ b/base/applications/rapps/appview.cpp @@ -1289,13 +1289,14 @@ CAppsListView::AddApplication(CAppInfo *AppInfo, BOOL InitialCheckState) /* Load icon from registry */ HICON hIcon = NULL; CStringW szIconPath; - int IconIndex; if (AppInfo->RetrieveIcon(szIconPath)) { - IconIndex = PathParseIconLocationW(szIconPath.GetBuffer()); - szIconPath.ReleaseBuffer(); + PathParseIconLocationW((LPWSTR)szIconPath.GetString()); - ExtractIconExW(szIconPath.GetString(), IconIndex, &hIcon, NULL, 1); + /* Load only the 1st icon from the application executable, + * because all apps provide the executables which have the main icon + * as 1st in the index , so we don't need other icons here */ + hIcon = ExtractIconW(hInst, szIconPath.GetString(), 0); } /* Use the default icon if none were found in the file, or if it is not supported (returned 1) */ @@ -1305,7 +1306,7 @@ CAppsListView::AddApplication(CAppInfo *AppInfo, BOOL InitialCheckState) hIcon = LoadIconW(hInst, MAKEINTRESOURCEW(IDI_MAIN)); } - IconIndex = ImageList_AddIcon(m_hImageListView, hIcon); + int IconIndex = ImageList_AddIcon(m_hImageListView, hIcon); DestroyIcon(hIcon); int Index = AddItem(ItemCount, IconIndex, AppInfo->szDisplayName, (LPARAM)AppInfo);