Properly scale modern task icons (#518)

Fixes #518
This commit is contained in:
ge0rdi
2022-12-31 14:11:13 +01:00
parent cf763d3a32
commit 421f55192e
2 changed files with 26 additions and 0 deletions

View File

@@ -1164,6 +1164,10 @@ const CItemManager::ItemInfo* CItemManager::GetLinkIcon(IShellLink* link, TIconS
CComPtr<IResourceMap> resMap;
if (SUCCEEDED(resManager->GetMainResourceMap(IID_PPV_ARGS(&resMap))))
{
CComPtr<IResourceContext> resContext;
if (SUCCEEDED(resManager->GetDefaultContext(IID_PPV_ARGS(&resContext))))
resContext->SetTargetSize(GetIconSize(iconSizeType));
CComString location;
if (SUCCEEDED(resMap->GetFilePath(logoUri, &location)))
return GetCustomIcon(location, -65536, iconSizeType, true);
@@ -3585,6 +3589,26 @@ void CItemManager::ClearCache( void )
item.extraLargeIcon=m_DefaultExtraLargeIcon;
}
int CItemManager::GetIconSize(TIconSizeType iconSizeType) const
{
switch (iconSizeType)
{
case ICON_SIZE_TYPE_SMALL:
case ICON_SIZE_TYPE_SMALL_METRO:
return SMALL_ICON_SIZE;
case ICON_SIZE_TYPE_LARGE:
case ICON_SIZE_TYPE_LARGE_METRO:
return LARGE_ICON_SIZE;
case ICON_SIZE_TYPE_EXTRA_LARGE:
case ICON_SIZE_TYPE_EXTRA_LARGE_METRO:
return EXTRA_LARGE_ICON_SIZE;
}
return 0;
}
// retrieves the pidl and the SFGAO_FOLDER, SFGAO_STREAM, SFGAO_LINK flags for the path
// for paths starting with \\ tries to guess if it is a folder or a link based on the extension
HRESULT MenuParseDisplayName( const wchar_t *path, PIDLIST_ABSOLUTE *pPidl, SFGAOF *pFlags, TNetworkType *pNetworkType )

View File

@@ -51,6 +51,8 @@ public:
ICON_SIZE_COUNT
};
int GetIconSize(TIconSizeType iconSizeType) const;
struct IconInfo
{
TIconSizeType sizeType;