Skip to content

Commit bb2d735

Browse files
committed
Properly scale modern task icons (#518)
Fixes #518
1 parent 7f94ebd commit bb2d735

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

Src/StartMenu/StartMenuDLL/ItemManager.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1164,6 +1164,10 @@ const CItemManager::ItemInfo* CItemManager::GetLinkIcon(IShellLink* link, TIconS
11641164
CComPtr<IResourceMap> resMap;
11651165
if (SUCCEEDED(resManager->GetMainResourceMap(IID_PPV_ARGS(&resMap))))
11661166
{
1167+
CComPtr<IResourceContext> resContext;
1168+
if (SUCCEEDED(resManager->GetDefaultContext(IID_PPV_ARGS(&resContext))))
1169+
resContext->SetTargetSize(GetIconSize(iconSizeType));
1170+
11671171
CComString location;
11681172
if (SUCCEEDED(resMap->GetFilePath(logoUri, &location)))
11691173
return GetCustomIcon(location, -65536, iconSizeType, true);
@@ -3585,6 +3589,26 @@ void CItemManager::ClearCache( void )
35853589
item.extraLargeIcon=m_DefaultExtraLargeIcon;
35863590
}
35873591

3592+
int CItemManager::GetIconSize(TIconSizeType iconSizeType) const
3593+
{
3594+
switch (iconSizeType)
3595+
{
3596+
case ICON_SIZE_TYPE_SMALL:
3597+
case ICON_SIZE_TYPE_SMALL_METRO:
3598+
return SMALL_ICON_SIZE;
3599+
3600+
case ICON_SIZE_TYPE_LARGE:
3601+
case ICON_SIZE_TYPE_LARGE_METRO:
3602+
return LARGE_ICON_SIZE;
3603+
3604+
case ICON_SIZE_TYPE_EXTRA_LARGE:
3605+
case ICON_SIZE_TYPE_EXTRA_LARGE_METRO:
3606+
return EXTRA_LARGE_ICON_SIZE;
3607+
}
3608+
3609+
return 0;
3610+
}
3611+
35883612
// retrieves the pidl and the SFGAO_FOLDER, SFGAO_STREAM, SFGAO_LINK flags for the path
35893613
// for paths starting with \\ tries to guess if it is a folder or a link based on the extension
35903614
HRESULT MenuParseDisplayName( const wchar_t *path, PIDLIST_ABSOLUTE *pPidl, SFGAOF *pFlags, TNetworkType *pNetworkType )

Src/StartMenu/StartMenuDLL/ItemManager.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ class CItemManager
5151
ICON_SIZE_COUNT
5252
};
5353

54+
int GetIconSize(TIconSizeType iconSizeType) const;
55+
5456
struct IconInfo
5557
{
5658
TIconSizeType sizeType;

0 commit comments

Comments
 (0)