Split off CShellitemArray
stub out CShellLibrary
stub out CUserEventTimer
rewrite some vista shellitem APIs
Misc stubs for vista
AddITaskbarList3/ITaskbarList4
---------
Co-authored-by: Oleb Dubinskiy <[email protected]>
Co-authored-by: Mikhail Tyukin <[email protected]>
- Added copy/move support for FolderItems collections.
- Added support for InvokeVerbEx on FolderItems collections.
- Added filter support for FolderItems collections.
Translate several missing English strings and fix translation error in the context menu.
- Update `IDS_MOVETOMENU` from `"Di&zini kopyala..."` to `"Di&zine taşı..."`. The previous translation mistakenly used "kopyala" (copy) for a move operation, which caused confusion and duplicated string appearance in the shell context menu.
- Complete translations for various previously untranslated strings (including advanced folder options, visual effects, and shortcut run states).
Prepare for CLSID_QueryAssociations.
JIRA issue: CORE-20467
- Add dll/win32/shell32/evalcmd/
elements.cpp.
- Implement AssocCreateElement
function in elements.cpp.
- Modify shell32.spec.
- Fix shlwapi!AssocCreate by using
AssocCreateElement.
- Add SKGetValueW and
SKSetValueW prototypes into
<shlwapi_undoc.h>.
- Add AssocCreateElement
prototype into <shlwapi_undoc.h>.
- Add some CLSIDs into
<shlguid_undoc.h>.
- Add some resource strings into
shlwapi.
- Add AssocGetPerceivedType
prototype into <shlwapi.h>.
- Add AssocCreateElement
testcase into shell32_apitest.
This function has an important role
for new ShellExecute implementation.
JIRA issue: CORE-19278
- Add evalcmd static library into
dll/win32/shell32/evalcmd.
- Implement
SHEvaluateSystemCommandTemplate
in evalcmd.
- Link evalcmd to shell32 and shlwapi.
- Modify shell32.spec and shlwapi.spec.
- Add prototype to <shellapi.h>.
- Add
SHEvaluateSystemCommandTemplate
testcase.
- Define PathIsAbsolute inline
function in <shlwapi_undoc.h>
and use it.
Implementing missing features...
JIRA issue: N/A
- Implement CShellDispatch::EjectPC
by using TRAYCMD_EJECT tray
command.
- Add TRAYCMD_SUSPEND and
TRAYCMD_REFRESH_MENU tray
commands (they have no effect)
into <undocshell.h>.
In `SHELL32_IsShellFolderNamespaceItemHidden()`, use `SHRegGetBoolUSValue()`
to look at both `HKEY_CURRENT_USER` with fallback to `HKEY_LOCAL_MACHINE`,
when searching for the registry value that determines whether a shell-folder
namespace item is to be hidden or shown.
Behaviour confirmed on Windows 2003.
Addendum to commit 6ae11ba09d (PR #7189).
Implementing missing functions...
JIRA issue: CORE-19278
- Add _SHMergePopupMenus and
SHLoadPopupMenu helper
functions.
- Implement
CDefFolderMenu_MergeMenu
function in utils.cpp.
- Add function prototype into
<undocshell.h>.
Implementing missing features...
JIRA issue: CORE-19278
- Implement LinkWindow_RegisterClass
function by using "superclassing".
- Add prototype to <undocshell.h>.
Fix CD-ROM eject in Explorer's "My Computer" not updating the drive text label (e.g., "ReactOS LiveCD (D:)" staying after eject). LV_RefreshIcon() only invalidated the cached icon (I_IMAGECALLBACK) but not the cached text, so the ListView never re-queried the display name.
Add text invalidation (LPSTR_TEXTCALLBACK) to force label refresh on media change events.
Fixes GCC 13 warnings about misleading indentation.
C:/ReactOS/reactos/dll/win32/shell32/wine/classes.c: In function 'HCR_GetIconA':
C:/ReactOS/reactos/dll/win32/shell32/wine/classes.c:357:5: error: this 'else' clause does not guard... [-Werror=misleading-indentation]
357 | else
| ^~~~
C:/ReactOS/reactos/dll/win32/shell32/wine/classes.c:360:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else'
360 | return ret;
| ^~~~~~
C:/ReactOS/reactos/dll/win32/shell32/wine/shellord.c: In function 'SHCreateStdEnumFmtEtc':
C:/ReactOS/reactos/dll/win32/shell32/wine/shellord.c:2455:5: error: this 'if' clause does not guard... [-Werror=misleading-indentation]
2455 | if (FAILED(hRes))
| ^~
In file included from C:/ReactOS/reactos/sdk/include/psdk/objbase.h:252,
from C:/ReactOS/reactos/sdk/include/psdk/ole2.h:25,
from C:/ReactOS/reactos/sdk/include/psdk/shlobj.h:22,
from C:/ReactOS/reactos/dll/win32/shell32/wine/shellord.c:32:
C:/ReactOS/build-gcc-x86/sdk/include/psdk/objidl.h:9734:37: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
9734 | #define IEnumFORMATETC_AddRef(This) (This)->lpVtbl->AddRef(This)
| ^
C:/ReactOS/reactos/dll/win32/shell32/wine/shellord.c:2458:9: note: in expansion of macro 'IEnumFORMATETC_AddRef'
2458 | IEnumFORMATETC_AddRef(pef);
| ^~~~~~~~~~~~~~~~~~~~~
This is some ATL weirdness. Someone familiar with this should do a more proper fix.
C:/ReactOS/reactos/sdk/lib/atl/atlcom.h: In instantiation of 'class ATL::CComObject<IDefClFImpl>':
C:/ReactOS/reactos/sdk/include/reactos/shellutils.h:401:45: required from 'HRESULT ShellObjectCreatorInit(T1, T2, T3, const IID&, void**) [with T = IDefClFImpl; T1 = long int (__attribute__((stdcall)) *)(IUnknown*, const _GUID&, void**); T2 = long int*; T3 = const _GUID*; HRESULT = long int; IID = _GUID]'
C:/ReactOS/reactos/dll/win32/shell32/shell32.cpp:202:47: required from here
C:/ReactOS/reactos/dll/win32/shell32/shell32.cpp:172:16: error: 'virtual HRESULT IDefClFImpl::CreateInstance(IUnknown*, const IID&, void**)' was hidden [-Werror=overloaded-virtual=]
172 | HRESULT WINAPI IDefClFImpl::CreateInstance(IUnknown * pUnkOuter, REFIID riid, LPVOID *ppvObject)
| ^~~~~~~~~~~
In file included from C:/ReactOS/reactos/dll/win32/shell32/precomp.h:32,
from C:/ReactOS/reactos/dll/win32/shell32/shell32.cpp:22:
C:/ReactOS/reactos/sdk/lib/atl/atlcom.h:171:27: note: by 'static HRESULT ATL::CComObject<Base>::CreateInstance(ATL::CComObject<Base>**) [with Base = IDefClFImpl; HRESULT = long int]'
171 | static HRESULT WINAPI CreateInstance(CComObject<Base> **pp)
| ^~~~~~~~~~~~~~
Improve usability of Fonts folder.
JIRA issue: CORE-17311
- Modify PIDL design to contain
name and filename.
- Implement CFontExt::
ParseDisplayName to parsing
name as PIDL.
- Modify CDefaultContextMenu::
GetCommandString and
CDefaultContextMenu::
DoCopyOrCut for DFM_GETVERBA,
DFM_GETVERBW, DFM_CMD_COPY,
and DFM_CMD_MOVE.
- Add IDS_CONFIRM_DELETE_FONT,
IDS_CANTDELETEFONT, and
IDS_PROPERTIES resource strings.
- Add SHMultiFileProperties
prototype to <shlobj.h>.
Follow-up of #8632. Improve usability of ZIP Folder.
JIRA issue: CORE-20464
- Add IDS_CONFIRMDELETE_TEXT and
IDS_CANTDELETEFILE resource strings.
- When deleting files in Zip Folder, create a
temporary file.
- CZipFolder::CopyZipEntry adds files to the
temporary file without adding files to delete.
- Replacing the target ZIP file with the temporary
file implements deleting files in Zip Folder.
- Add SFGAO_CANDELETE attribute.
- Add DFM_CMD_DELETE action.
- Modify CDefaultContextMenu in shell32 to invoke DFM_CMD_DELETE etc.
- Modify CNewMenu::LoadItem in shell32.
The filesystem of the virtual folder
"Recycle Bin" is complicated, so we
had to add special handling to watch
change notification on it.
JIRA issue: CORE-20435
- Add CRecycleBinFolderViewCB.cpp
and CRecycleBinFolderViewCB.h.
- Add CRecycleBinFolderViewCB class
(with IShellFolderViewCB interface)
and associate it with CRecycleBin.
- Hook SFVM_QUERYFSNOTIFY and
SFVM_FSNOTIFY in
CRecycleBinFolderViewCB.
- Implement watching of shell change
notification.
wcsicmp depends on CRT locale status. We have to respect
thread locale.
JIRA issue: CORE-20442
- Use shlwapi!StrCmpIW instead of wcsicmp in
FileTypesDlg_CompareItems function.