Commit Graph
100 Commits
Author SHA1 Message Date
Whindmar Saksit 32fad87a08 [ROSAUTOTEST][SDK] ROS detection for apitests (#7613) 2025-04-02 15:17:18 +02:00
Whindmar Saksit 4965d6a8ac [USER32_APITEST] Add more PrivateExtractIcons tests (#7831) 2025-04-02 15:16:04 +02:00
Whindmar Saksit 769462faaa [IEFRAME] Implement URL PIDL (#7850) 2025-04-01 16:09:25 +02:00
Whindmar Saksit 190782c3e0 [SHELL32] Fix some clang warnings (#7845) 2025-03-31 18:59:04 +02:00
Whindmar Saksit aa4fac61c8 [BROWSEUI] Implement ShellBrowser F11 fullscreen mode (#7844) 2025-03-31 18:09:54 +02:00
Whindmar Saksit cc8ec38a87 [SHELL32] Use SHGDN_FOREDITING when renaming in BrowseForFolder (#7840)
- Use SHGDN_FOREDITING when renaming.
- Handle rename change notification without full refresh.
- Don't use FS path when deleting.

CORE-20064
2025-03-30 23:11:27 +02:00
Whindmar Saksit 467dec4d16 [CLEANMGR] Only allow one instance per drive (#7832)
CORE-18941
2025-03-29 16:58:18 +01:00
Whindmar Saksit 21b3382f31 [SHELL32] Allow shell to format blank partitions (#7810)
- Don't corrupt static (global) data when formatting more than one disk at the same time.
- Guess partition size to enable formatting blank partitions.
- Added info tip.
- Calls SetVolumeLabel.

CORE-17273
2025-03-29 16:35:03 +01:00
Whindmar Saksit 090d563488 [SHELL32] CFolderOptions Reset can call DefView directly if there is no browser (#7806)
CORE-20029
2025-03-28 23:15:01 +01:00
Whindmar Saksit b6562a664b [SHELL32] DefView statusbar item file size fix in recycler and UNC (#7732)
- Display item sizes inside \\ UNC paths.
- Don't display anything in the location pane inside the Recycle Bin (CORE-20005).
- Don't display the size and location panes in My Computer
- Don't update the location pane on simple item selection changes.

CORE-20005
2025-03-27 18:29:44 +01:00
Whindmar Saksit a444572c3e [SHIMGVW] Display error message on delete failure (#7776)
CORE-20019
2025-03-27 13:43:58 +01:00
Whindmar Saksit c1b8c4f96f [SHELL32] Correctly implement common desktop items PIDL (#7730)
The current implementation is broken, if a file/folder exists in both places, you always get the user item.

CORE-19861
2025-03-25 21:26:55 +01:00
Whindmar Saksit f222c2155d [SHELL32][SHDOCVW] Fix drive volume renaming (#7812)
* [SHELL32] Fix drive volume renaming

- Support renaming to empty volume name.
- Use SHGDN_FOREDITING in Explorer tree and DefView ("Volname" instead of "VolName (C:)").
- Added support for the ShowDriveLettersFirst setting.

CORE-17292

* Suggested changes
2025-03-24 22:01:22 +01:00
Whindmar Saksit 56e7afe56c [SHDOCVW][SHELL32] Rename RegItem to empty name must reset the name to the default (#7794)
CORE-18839
2025-03-21 13:51:45 +01:00
Whindmar Saksit 7dc7b866b1 [RAPPS] Don't delete downloaded ZIP/CAB even if configured to (#7791) 2025-03-20 14:32:07 +01:00
Whindmar Saksit 7f49ae633b [SHELL32] Multiple drives property sheet support (#7787)
Supports multiple drives in a single property sheet

CORE-20025
2025-03-20 13:33:51 +01:00
Whindmar Saksit d769f5675d [RAPPS] Must apply settings changes when a new download folder is created (#7792) 2025-03-19 12:24:52 +01:00
Whindmar Saksit 4a1877d0f6 [NTDLL][SHLWAPI][SYSDM] ReportAsWorkstation should always override the product type (#7052)
Allows "ROS as a workstation" installs to report itself as a basic server to Win32 applications when the user toggles the sysdm.cpl checkbox (to unchecked in this case).
2025-03-19 00:10:46 +01:00
Whindmar Saksit c6b134123b [SHELL32] Initialize COM for PickIconDlg (#7788)
CORE-20030
2025-03-16 10:09:31 +01:00
Whindmar Saksit 96aa1eee17 [LNKTOOL][SHELL32] Add utility to create/dump .lnk files (#7745)
Unlike mkshelllink, this uses the native COM interface to create the link.
2025-03-15 16:31:22 +01:00
Whindmar Saksit 0089017d54 [SHELL32] Don't close icon dialog when selecting from autocomplete (#7766) 2025-03-09 22:00:16 +01:00
Whindmar Saksit 5af47c9baf [BROWSEUI] Set AddressBand Go button checkbox state correctly in menu (#7771)
CORE-20018
2025-03-09 21:59:03 +01:00
Whindmar Saksit 5461abeeba [SHELL32][SHELL32_APITESTS] SHDefExtractIcon zero icon size as sysmetric (#7768) 2025-03-09 15:41:53 +01:00
Whindmar Saksit f844296b0a [BROWSEUI][SHELL32] Fix FindFolder icons (#7756)
- Shortcut icons require the correct IShellFolder because it needs the full path.
- Items in a drive root needs the final backslash to be part of the path.

CORE-18692
2025-03-08 14:30:04 +01:00
Whindmar Saksit acbadb9fba [USER32] PrivateExtractIcons must return 0 for empty files (#7767)
This bug breaks the documented S_FALSE return value for SHDefExtractIconW when the icon is not found.
2025-03-08 13:34:23 +01:00
Whindmar Saksit fc6330a01a [SHDOCVW] Don't show create shortcut context menu item in Explorer tree (#7735) 2025-03-05 13:41:02 +01:00
Whindmar Saksit 4a0f0ddbd7 Implement GetDefaultColumn and GetClassID (#7750) 2025-03-05 13:40:10 +01:00
Whindmar Saksit f1a66daeeb [SHELL32] Display cut items as ghosted (#7739)
- When Ctrl+X is pressed on a selected item, it will appear ghosted until another clipboard action takes place.
- Generate SHCNE_UPDATE* notifications when file attributes change.
- When an items hidden attribute is changed (filesystem notification), we must update the ghosted state.

CORE-9465
2025-03-02 13:07:23 +01:00
Whindmar Saksit 9a55c931f8 [BROWSEUI][SHELL32] Fix desktop and computer find files locations (#7721)
- Searching the Desktop now searches the two desktop folders.
- Searching My Computer now searches all local disks.
- Adds a "Browse..." entry to the combobox list.
2025-02-28 18:52:48 +01:00
Whindmar Saksit 556cc8a7b2 [BROWSEUI] Set find files pane focus (#7722)
CORE-16424
2025-02-28 16:57:08 +01:00
Whindmar Saksit a236c39ee5 [RAPPS] Added option to display small application icons (#7723) 2025-02-23 19:27:02 +01:00
Whindmar Saksit 46d01bc7fd [SHIMGVW] Only enable toolbar edit and print buttons if the shell verb exists (#7725)
CORE-20002
2025-02-23 14:08:36 +01:00
Whindmar Saksit e5fc4de8c9 [SHELL32] Handle multiple files in recycle bin delete/restore operations (#7568)
CORE-19895 CORE-19231
2025-02-22 13:03:11 +01:00
Whindmar Saksit 924592dc47 [DESK] Don't include .ico files in list of wallpapers (#7726)
CORE-20003
2025-02-22 13:01:32 +01:00
Whindmar Saksit ae79d1af90 [COMCTL32] ListView LVIS_CUT image does not depend on focus (#7724)
Also undoes flicker caused by PR #4218.
2025-02-19 15:26:49 +01:00
Whindmar Saksit 88f105e184 [GDIPLUS] Identify .ico codec format as ImageFormatIcon (#7714) 2025-02-18 13:24:51 +01:00
Whindmar Saksit f3c750787b [RAPPS] Ask user if they want to run the zip app they just installed (#7719)
After the zip has been installed, ask the user if they want to run the extracted application.
2025-02-18 13:23:25 +01:00
Whindmar Saksit 705a985789 [COMCTL32][COMCTL32_APITEST] Implement ImageList Get/SetFlags and the system flag (#7701)
The shell needs to be able to change the color depth of the system image lists on the fly and it does that by changing the ILC_COLOR* flags.
2025-02-17 13:46:20 +01:00
Whindmar Saksit a1157f86f2 [SHELL32] OpenWith should use dll path instead when the command starts with rundll32 (#7712)
CORE-16980
2025-02-15 14:27:51 +01:00
Whindmar Saksit 396249d9e0 [APPWIZ] Don't set the .lnk filename as the shortcut comment (#7720) 2025-02-15 14:17:01 +01:00
Whindmar Saksit bc52d5f1f4 [SHIMGVW] Display shell context menu for the image on right-click (#7711)
CORE-13340
2025-02-13 13:13:02 +01:00
Whindmar Saksit 329a414584 [SHIMGVW] Choose a better icon image and also support .cur files (#7706)
- Choose an icon image based on size and color and place it first so GDI+ will pick it
- Change .cur files to .ico so GDI+ can open it

CORE-19945
2025-02-12 20:57:51 +01:00
Whindmar Saksit e4216bd015 [SHELL32] Expand .lnk working directory string before checking if it's valid (#7710)
Handles the case where SEE_MASK_DOENVSUBST will expand it later inside ShellExeute.

CORE-19987
2025-02-09 20:07:17 +01:00
Whindmar Saksit dd34ad7037 [SHIMGVW] Fixes and enhancements (#7705)
Fixes:
- Reduce flicker when resizing main window
- Fixed slideshow starting with 1x1 pixel image zoom
- Don't reset zoom levels > 100% when resizing main window
- Always retain an active window on toggle slideshow (show/hide actions order)
- Enable/disable real-size button as required
- Correctly handle accelerators in main window after slideshow has been closed
- Use same zoom shortcuts as NT6

New features (unique to ROS):
- Fullscreen mode (slideshow mode but without timer)
- Alt+Enter or double-click to toggle fullscreen mode
- Shift +/- to change fullscreen slideshow next picture timer

CORE-19358
2025-02-08 16:22:20 +01:00
Whindmar Saksit 5bc6d59142 [RAPPS] Refresh item info after installer completes (#7697)
- Refresh the details view of the item that was just installed.
- Hint update of uninstallers list is needed.
- Restore focus correctly after installer process finishes.

CORE-17677
2025-02-07 21:33:19 +01:00
Whindmar Saksit 77e4217919 [SHELL32] CMenuBand must set ShowWindow value for InvokeCommand (#7695) 2025-02-01 13:50:22 +01:00
Whindmar Saksit f335322ace [SHELL32] SEE_MASK_IDLIST should not assume the PIDL is always a FS path (#7693)
CORE-16898 CORE-14177
2025-01-31 21:15:13 +01:00
Whindmar Saksit 6265add147 [SHELL32] Don't close Run dialog on execution failure (#7686)
CORE-19983
2025-01-31 12:52:20 +01:00
Whindmar Saksit d5ce3d28ab [RAPPS] Don't display Freeware license string if the type is also Freeware (#7689)
License=Freeware, LicenseType=2 should not display as "Freeware (Freeware)"
2025-01-30 21:14:10 +01:00
Whindmar Saksit a23db39c8a [RAPPS] Allow database to override download filename (#7668)
http://example.com/setup.exe?foo=bar needs to use be able to use setup.exe as the
filename.
2025-01-30 17:46:39 +01:00
Whindmar Saksit b35becef2e [RAPPS] Set working directory for zip generated shortcuts (#7674)
Some applications are broken and assume the working directory is the
same as the .exe directory (xrick etc).
2025-01-29 00:46:11 +01:00
Whindmar Saksit 72951421e6 [RAPPS] Reuse active pending downloads window (#7648)
CORE-16716 CORE-16804
2025-01-25 16:42:48 +01:00
Whindmar Saksit 357505e752 [PSDK] Avoid CO_E_NOTINITIALIZED macro redefinition warning (#7649)
Addendum to commit 0e88f0485c
2025-01-21 19:15:09 +01:00
Whindmar Saksit c8b2c4c94d [RAPPS] Check Let's Encrypt issuer prefix (#7650) 2025-01-21 13:06:55 +01:00
Whindmar Saksit b87c6b8799 [SHELL32] Temporarily disable LVS_EX_DOUBLEBUFFER in DefView (#7642)
Hackfix for CORE-19624 and CORE-19818 until ListView is fixed
2025-01-19 23:20:34 +01:00
Whindmar Saksit aebaa14eba [SHELL32] Allow DnD to create shortcuts across different drives (#7607)
CORE-17871 CORE-18271
2025-01-19 21:00:55 +01:00
Whindmar Saksit 91b8923601 [RAPPS] Allow .zip generated installers to skip writing the DisplayIcon value (#7609)
This is useful for wallpaper and theme packs.
2025-01-14 18:09:48 +01:00
Whindmar Saksit 087979eeb9 [REGEDIT] Block tree label edit if the delete accelerator has been pressed (#7610) 2025-01-13 13:21:12 +01:00
Whindmar Saksit 3ff8adc553 [RAPPS] Protect database update with a mutex (#7006) 2025-01-11 19:52:07 +01:00
Whindmar Saksit 03ee0756b8 [SHELL32] Clone properties IDataObject for unlimited lifetime (#7601)
Because SHOpenPropSheetW() is modal, there is no way for us to keep COM
alive on the original thread until the dialog completes, so a cloned
data object is used instead so that the property sheet handlers may access
the object even after ShellExecute() has returned (this is only relevant
for callers like Taskmgr that does not initialize COM even though MSDN
says they should).

Addendum to afc130ff3f (PR #7571). CORE-19933
2025-01-08 14:22:34 +03:00
Whindmar Saksit afc130ff3f [SHELL32] Pump COM messages while initializing propsheet from IDataObject (#7571)
CORE-19933
2025-01-03 20:16:56 +01:00
Whindmar Saksit fd41270d6d [SHELL32] ShellExecuteW must call ShellExecuteExW (#7587)
Adds the DDEWAIT/NOASYNC flag unless compatibility info says otherwise.

CORE-19952
2024-12-29 15:22:30 +01:00
Whindmar Saksit 1faa571f3f [SHELL32] CM::InvokeCommand case-insensitive compare verb string (#7582)
CORE-18733
2024-12-27 14:47:11 +01:00
Whindmar Saksit 1fec01561d [SHDOCVW][BROWSEUI][SHELL32] Correctly refcount CNSCBand and Explorer File menu (#7569)
CORE-19879 CORE-19780
2024-12-27 14:46:30 +01:00
Whindmar Saksit 7d75bfb449 [SHELL32] ILLoadFromStream must allow loading unknown pidl formats (#7570) 2024-12-25 20:32:08 +01:00
Whindmar Saksit 0743faf2e3 [NETSHELL] Handle DefView accelerators (#7572)
CORE-18750
2024-12-22 21:27:20 +01:00
Whindmar Saksit 28399a216b [SHELL32] Use FS compatible PIDL format for Recycle Bin items (#7532)
* [SHELL32] Use FS compatible PIDL format for Recycle Bin items

This allows SHChangeNotify to handle these items and DefView will correctly update the recycle folder.

CORE-18005 CORE-19239 CORE-13950 CORE-18435 CORE-18436 CORE-18437
2024-12-19 14:38:27 +01:00
Whindmar Saksit 63bb46a2fd [CABVIEW] Add CabView shell extension (#7494)
CORE-14616
2024-12-05 15:14:55 +01:00
Whindmar Saksit 11d5cb8095 [BROWSEUI] FindFolder must release the view and the browser (#7529)
CORE-19780
2024-11-30 22:05:50 +01:00
Whindmar Saksit 2aadf2eb26 [SHELL32] Implement and use SHOpenPropSheet (#7432)
- Implement SHOpenPropSheetW.
- Reuse already opened propertysheets and format dialogs by finding the existing unique stub window.
- Default .lnk property dialog to the shortcut tab.
2024-11-27 17:45:03 +01:00
Whindmar Saksit c569aee023 [EXPLORER] Implement ABM_GET/SETSTATE and ABM_GETTASKBARPOS (#7525) 2024-11-25 19:51:19 +01:00
Whindmar Saksit 89a3b8fa8a [SHELL32] Refresh SHELLSTATE before writing it (#7516) 2024-11-22 20:33:12 +01:00
Whindmar Saksit 4d0a26db58 [SHLWAPI][SHLWAPI_APITEST] Optimize StrRetToStrW WSTR handling (#7513)
This avoids Alloc/Free while also matching the Windows behavior.
2024-11-19 23:50:08 +01:00
Whindmar Saksit 2834e5b3c8 [RAPPS] Initialize SHBrowseForFolder to current download folder (#7505) 2024-11-18 16:42:43 +01:00
Whindmar Saksit 8107ff8636 [SHELL32][SHELL32_APITEST] Consolidate file type description handling (#7485)
- Fixes the case where an extension exists in HKCR but has no ProgId (half of CORE-19355)
- Fixes some cases where Wine hardcoded "File and "... file" strings are used instead of localized strings in SHGetFileInfo.
2024-11-17 20:13:05 +01:00
Whindmar Saksit 6d109254ab [SHELL32] Correctly compare pidls for SHBrowseForFolder BFFM_SETEXPANDED (#7499)
_ILIsEqualSimple just does a memcmp and that does not work for all items.

Should improve shell change notifications (CORE-13950).
2024-11-16 16:28:28 +01:00
Whindmar Saksit 9ccafe8e49 [SHELL32] Force FileType OpenWith verb (#7470)
CORE-19816
2024-11-09 16:49:27 +01:00
Whindmar Saksit a17b6e9369 [SHELL32][BROWSEUI] Set DefView InvokeCommand directory (#7495)
If a .lnk shortcut does not specify a working directory, it should use the directory provided by the InvokeCommand caller when it's launced.

CORE-19855
2024-11-08 23:27:26 +01:00
Whindmar Saksit 9cca5bf4b0 [SHELL32] No new menu and working properties in Drives and NetHood background menu (#7430)
- No "New" menu in My Computer background menu.
- Add "Properties" in NetHood background menu.
2024-10-31 14:12:34 +01:00
Whindmar Saksit ea87f9102b [SHELL32][SHELL32_APITEST] Fix ShellExecuteEx IDLIST folder (#7464)
This is mainly to fix the shell32 apitest, a better way to handle SEE_MASK_IDLIST should be investigated in the future.
2024-10-24 16:44:53 +02:00
Whindmar Saksit 5797340164 [SHELL32] Fix broken delete file type verb (#7462)
CORE-19809
2024-10-18 14:42:08 +02:00
Whindmar Saksit f271bebb71 [SHELL32] Exclude executable extensions from File Types dialog (#7452)
PathIsExeW is used and will exclude exe, com, pif, cmd, bat, scf and scr. The previous #6122 PR added support for the FTA_Exclude flag and that will exclude .lnk files.

CORE-19805
2024-10-16 14:09:33 +02:00
Whindmar Saksit 43d07fe695 [SHELL32] File Types dialog: Add functionality, optimize loading time (#6122)
- Support loading protocols like XP
- Support most of the relevant EditFlags
- Support reading/writing the AlwaysShowExt and BrowserFlags properties
- Loads the list much faster with optimized code and delaying the large icon and description string
- Reduce the number of magic buffer sizes by replacing them with defines that are in the ballpark of being correct
- Implemented column sorting
- Removed custom icon extraction code
- Removed IDS_FILE_EXT_TYPE string because it must be the same as IDS_ANY_FILE
- Don't touch verb keys that are not edited to retain the original REG type
- Don't clobber unchanged %1 icon location when editing a type

CORE-19756
2024-10-14 18:03:28 +02:00
Whindmar Saksit 654c59a5f8 [SHELL32_APITEST] Basic ILIsEqual tests (#7438) 2024-10-13 17:46:06 +02:00
Whindmar Saksit 325d74c30f [SHELL32] Don't display .zip files in BrowseForFolder (#7437)
.zip files have both SFGAO_STREAM and SFGAO_FOLDER attributes set (https://devblogs.microsoft.com/oldnewthing/20171101-00/?p=97325)

CORE-19751
2024-10-11 23:57:28 +02:00
Whindmar Saksit abf3bde91b [SHELL32] Make Recycle Bin PIDL data handling more robust (#7328) 2024-10-11 23:47:06 +02:00
Whindmar Saksit 52265ae007 [SHELL32] Implement SSF_NOCONFIRMRECYCLE recycler setting (#7434)
CORE-12309
2024-10-09 22:00:11 +02:00
Whindmar Saksit 8ff9781eae [SHELL32] Always initialize COM for Folder Options dialog (#7433)
CORE-19784
2024-10-09 21:58:44 +02:00
Whindmar Saksit f4cb10f596 [SHELL32] Remove view related items from File menu (#7429)
CORE-19778
2024-10-08 18:17:24 +02:00
Whindmar Saksit 053939e27c [RAPPS] Hide the main window during active download/install if the user closes it (#7014) 2024-09-26 18:58:30 +02:00
Whindmar Saksit 2f83e6a65d [RAPPS] Use different mutex and title for AppWiz mode (#7350)
The two different modes needs separate mutex and window titles, otherwise you can end up stuck in AppWiz mode.
2024-09-26 18:06:13 +02:00
Whindmar Saksit d4815873fe [SHELL32] Don't leak SetProp (#7347) 2024-09-18 21:48:58 +02:00
Whindmar Saksit 301675c112 [RAPPS] Respect partial settings configuration (#7247)
Instead of defaulting all settings if any setting is missing, respect any setting that is already set and default the rest.
2024-09-16 00:51:53 +02:00
Whindmar Saksit 7b081be46d [SHELL32][MKSHELLLINK] Support EXP_SPECIAL_FOLDER datablock in shortcuts (#7158)
CORE-19692
2024-09-14 13:10:49 +02:00
Whindmar Saksit 751641c2be [SHELL32][COMCTL32][BROWSEUI][EXPLORER] Update color usage on WM_SYSCOLORCHANGE (#7325) 2024-09-14 13:07:11 +02:00
Whindmar Saksit bad0dd5991 [SHELL32] Store target FS attributes in .lnk header (#7302) 2024-09-12 19:28:15 +02:00
Whindmar Saksit bc8c7d185d [SHELL32] Fix CRecycleBin crash caused by PR #7173 (#7330)
PR #7173 (22b913928f) fails to initialize the DELETED_FILE_RECORD struct when constructing a RecycleBin5File instance. This causes _ILCreateRecycleItem to create PIDLs without filenames and the CRecycleBin IShellFolder does not expect this to happen.

Also fixes incorrect usage of SHFileOperationW when restoring deleted files. The previous code might have worked by chance in the past if the string just happened to be double-null terminated as required by this API!
2024-09-08 22:08:15 +02:00
Whindmar Saksit d9afe73de4 [NOTEPAD] Display error code if no error string is available (#7319) 2024-09-08 13:47:32 +02:00
Whindmar Saksit da26ec3465 [NOTEPAD] Don't handle main window accelerators in Find dialog (#7320) 2024-09-08 13:45:51 +02:00
Whindmar Saksit a509941786 [SHELL32] Pass and expand .lnk working directory (#7314) 2024-09-06 14:31:24 +02:00