I wroted the patch that allows Rapps to display the custom app icons for installed software instead of just default Rapps icon. In my opinion, default icon for each application looks monotonously and not informatively, because it doesn't display what it should. So displaying the custom app's icon instead will make it less hard to understand which app is actually installed. Moreover, it already has been done for available apps (during GSoC 2020).
My patch contains the following changes:
- Implement `RetrieveIcon` helper function in `CInstalledApplicationInfo` class, which retrueves the current app's icon from registrty, same as it done for `CAvailableApplicationInfo`.
- Use it for loading the icon in `CAppsListView::AddInstalledApplication` function, via `ExtractIconW`. Load default Rapps icon only when the app has no its custom icon.
- Retrieve `DisplayIcon` value from registry in `CInstalledApps::Enum` function, same as other registry values (like app name, description, etc).Store it in `szDisplayIcon` string, which is used in `CInstalledApplicationInfo::RetrieveIcon` for retrieving the data of that value.
- Increase `LISTVIEW_ICON_SIZE` macro from 24 to 32, so 32x32 icon size is now used instead of 24x24. This makes displayed icons more accurate, since most of apps contain 32x32 icon, so they look a bit distorted with 24x24 size.
- Display the icons also for apps, whose strings in registry are terminated by zero. Currently, my patch implements displaying the icons only for apps, which have direct string. E. g. for:
it displays the icon correctly, but for
it does not.
I don't know exactly how I can do that. Probably I should use something other as 3rd parameter of ExtractIconW function, which I can declare differently.