mirror of
https://github.com/reactos/reactos.git
synced 2025-01-03 21:09:19 +00:00
f9a5344254
Implement proper reading the current user's icons from registry. CORE-14758 - Load the icons specified by user in registry in the following keys: "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}\DefaultIcon" (virtual namespace folders) "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Icons" (filesystem folders and drives) - Implement two functions HCU/HLM_GetIconW for reading the icons from mentioned HKCU and HKLM keys accordingly. - Use HCR_RegGetIconW for falling back to default icons. This function always loads only default icons, even when the custom ones are specified by user. - Refactor SIC_LoadOverlayIcon to use newly implemented HLM_GetIconW. These changes apply to: - virtual namespace folders and other desktop items (like My Computer, My Documents, Network Places, Recycle Bin, Web Browser (aka Internet Explorer), Control Panel and some of its items); - normal filesystem directories; - all types of drives (fixed disk drives, removable drives, CD-ROMs, RamDisks and network drives). Handle invalid drives, setting blank icon for them, since they cannot be recognized or mounted correctly. Also, load the autorun icons first to avoid overriding them by the icons defined in registry. I've rechecked twice: excluding Start Menu icons, Desktop Workspace icon and some FS folder icons that have their own desktop.ini configuration files (we probably should write the custom icons we load to these configs, as Windows does it, perhaps with WritePrivateProfileStringW), all other icons can be changed now (only ones that can be changed on XP SP3 / 2003 SP2) via built-in system tools (like Desktop icons in desk.cpl) or any 3rd-party tools without modifying system resources. Also all icons for the known file types can be changed, same as before my changes. Regarding Start Menu icons: - changing them should be correctly implemented in explorer instead of shell32, as the former is responsible for the Start Menu and partially for the taskbar; - in order to actually use all of them, we need to implement modern Start Menu first. Useful reference: http://www.winfaq.de/faq_html/Content/tip0000/onlinefaq.php?h=tip0162.htm |
||
---|---|---|
.. | ||
dialogs | ||
droptargets | ||
folders | ||
lang | ||
res | ||
shelldesktop | ||
shellmenu | ||
shellrecyclebin | ||
wine | ||
avi_res.rc | ||
bitmap_res.rc | ||
CActiveDesktop.cpp | ||
CActiveDesktop.h | ||
CCopyMoveToMenu.cpp | ||
CCopyMoveToMenu.h | ||
CDefaultContextMenu.cpp | ||
CDefView.cpp | ||
CDefViewBckgrndMenu.cpp | ||
CDefViewDual.cpp | ||
CDropTargetHelper.cpp | ||
CDropTargetHelper.h | ||
CEnumIDListBase.cpp | ||
CEnumIDListBase.h | ||
CExtractIcon.cpp | ||
CFileSysBindData.cpp | ||
CFolder.cpp | ||
CFolder.h | ||
CFolderItems.cpp | ||
CFolderItems.h | ||
CFolderItemVerbs.cpp | ||
CFolderItemVerbs.h | ||
CFolderOptions.cpp | ||
CFolderOptions.h | ||
changenotify.cpp | ||
CIDLDataObj.cpp | ||
CMakeLists.txt | ||
CNewMenu.cpp | ||
CNewMenu.h | ||
COpenWithMenu.cpp | ||
COpenWithMenu.h | ||
CQueryAssociations.cpp | ||
CQueryAssociations.h | ||
CSendToMenu.cpp | ||
CSendToMenu.h | ||
CShellDispatch.cpp | ||
CShellDispatch.h | ||
CShellItem.cpp | ||
CShellItem.h | ||
CShellLink.cpp | ||
CShellLink.h | ||
CUserNotification.cpp | ||
CUserNotification.h | ||
debughlp.cpp | ||
debughlp.h | ||
folders.cpp | ||
icon_res.rc | ||
iconcache.cpp | ||
precomp.h | ||
rgs_res.rc | ||
shell32.cpp | ||
shell32.rc | ||
shell32.spec | ||
shell32_shldisp.idl | ||
shell32_version.h | ||
shell32_version.rc | ||
shfldr.h | ||
shldataobject.cpp | ||
shlexec.cpp | ||
shlfileop.cpp | ||
shlfolder.cpp | ||
shobjidl_local.idl | ||
shresdef.h | ||
stubs.cpp | ||
systray.cpp | ||
utils.cpp | ||
vista.c |