Commit graph

39 commits

Author SHA1 Message Date
Whindmar Saksit
ecb5cae48f
[SHELL32] SetNameOf should not append old extension to folders (#6954) 2024-06-08 18:45:23 +02:00
Katayama Hirofumi MZ
3285f698fd
[SHELL32][SDK] SHChangeNotify: Re-work Part 1 (#6898)
Making shell change notification implementation better.
Now recycle bin icon change is working.
JIRA issue: CORE-13950
JIRA issue: CORE-19591
JIRA issue: CORE-11453
- Delete SHSimpleIDListFromPathA/W hacks.
- Translate simple PIDLs (coming from SHSimpleIDListFromPathA/W)
  in CDefView::OnChangeNotify method.
- Add CDefView::LV_RefreshIcons method for SHCNE_UPDATEIMAGE
  change event.
- Rename CDefView::LV_ProdItem method as CDefView::LV_UpdateItem.
- Call SHUpdateRecycleBinIcon in SHFileOperationW function.
- Half-implement SHUpdateRecycleBinIcon.
- Call SHChangeNotify in DeleteExt function.
2024-05-17 08:10:15 +09:00
Whindmar Saksit
daf806802a
[SHELL32] Use common default DFM callback message handler (#6779)
Moves default processing of all DFM_ callback messages in SHELL32 to a single function.

CORE-18585
2024-05-09 19:52:05 +02:00
Whindmar Saksit
07d55ce1cf
[SHELL32] CFSFolder parsing must only apply bind data to the last item (#6794)
When IShellFolder::ParseDisplayName is asked to parse multiple path elements, the IFileSystemBindData (if any) only applies to the last item. The other elements are always folders.
2024-05-02 18:00:12 +02:00
Doug Lyons
3693d55404
[SHELL32] Fix Desktop folder details view (#5743)
* [SHELL32] Fix Desktop Folder Details View

JIRA issue: [CORE-19177|https://jira.reactos.org/browse/CORE-19177]

* Remove Comments column from Desktop Folder Details View and simplify code.
* Revise date/time sort based on reviewer comments.
* Swap size and type column positions for desktop folder details view.

With help from Whindmar, most (hopefully all) of the magic number for the columns
have been removed in all of the shell folders.

Co-authored-by: Whindmar Saksit <whindsaks@proton.me>
Co-authored-by: Carl J. Bialorucki <cbialo2@outlook.com>
2024-04-25 17:20:28 -05:00
Katayama Hirofumi MZ
7fdec96009
[SHELL32] Fix ParseDisplayName Part 2 (#6740)
Follow-up to #6721. Reduce
SHParseDisplayName failures.
JIRA issue: CORE-19495
- Re-implement CFSFolder::ParseDisplayName
  method to validate the names.
- Add CFSFolder::_ParseSimple,
  CFSFolder::_GetFindDataFromName, and
  CFSFolder::_CreateIDListFromName helper
  methods.
- Add PathIsDotOrDotDotW, PathIsValidElement,
  PathIsDosDevice, and SHILAppend helper
  functions.
- Delete GetNextElementW and add
  Shell_NextElement function.
2024-04-13 21:07:12 +09:00
Whindmar Saksit
a83e40f6d1
[SHELL32] Fix FS folder assoc array class order (#6047)
Fixes the reg class key order for FS items. The existing code was close,
but for some reason used `//` as the path separator for SystemFileAssociations!

- Fixed SystemFileAssociations.

- Swapped the order of `*` and `AllFilesystemObjects`. This is the documented
  order and can also be observed in Process Monitor.
  https://learn.microsoft.com/en-us/windows/win32/shell/fa-associationarray#about-association-arrays

- Removed `(..., L"%s//%s", extension, wszClass)`, this does not seem to be
  a valid thing (`.TestAAExtWeird` in my tests).

- Adds the `Unknown` class when appropriate. Not adding the `openas` verb
  to `Unknown` rgs registration now to mimic Windows, because ROS
  `CDefaultContextMenu` lacks verb de-duplication and the menu would end up
  with two "Open With" entries. This just uses `(cidl == 1)` to simulate
  Windows, while Windows on NT6 uses `MultiSelectModel=Single`, a NT6 feature
  not implemented in ROS.

- The class order for folders was wrong and is still "wrong" in this PR,
  but I chose to use the Windows menu display order until the exact mechanics
  required in `CDefaultContextMenu` can be understood.

- Extracts the extension from ANSI PIDLs.
2024-03-24 21:37:59 +01:00
Oleg Dubinskiy
f9a5344254
[SHELL32] Allow using custom desktop/folders/drives icons (#6421)
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
2024-02-29 00:20:47 +03:00
Doug Lyons
8a7b5a9009
[SHELL32][USER32] Fix icon regression and one test (#5207) 2023-05-21 11:18:00 +02:00
Joachim Henze
a33fe38418
[SHELL32] Show 'comment' column for folders, make it rightmost CORE-18615 (#4868)
In explorer filebrowser 'details' view
the column 'comments' had invalid length of zero, and therefore
was hidden under the 'attributes' column.

I guess even after this patch, it will not display any
sane contents in there yet.
Therefore I chose a small width of 10 only, to reduce the chance for
it to trigger an undesired horizontal scrollbar.

As far as I see we don't support manual showing and hiding of additional columns yet.
By default my Windows does not show this column. But when activated manually, it is always
shown on the right hand side of the 'attributes' column.
2022-11-11 18:25:50 +01:00
Mark Jansen
6a1f287820
[SHELL32] Show file / drive properties at the position where the mouse was.
CORE-18386
2022-10-14 21:02:33 +02:00
Thomas Csovcsity
860d3544af
[SHELL32] Folders: Adjust column sequence in details view (#4279)
Adjust column sequence in folder view to match WinXP and Win2k3 order.
CORE-11846
2022-05-05 17:05:18 +02:00
Mark Jansen
6304059721
[SHELL32] Add extra information when encountering an unexpected pidl
In addition, make pdump slightly less unusable
2022-02-22 19:43:05 +01:00
Mark Jansen
f6f5490ab4
[SHELL32] ShellExecute: Implement SEE_MASK_INVOKEIDLIST
CORE-18035
Also simplify some error handling by using smart pointers
2022-02-07 20:56:21 +01:00
Hermès Bélusca-Maïto
83be315abf
[SHELL32] Use wide char string literals.
Import parts of Wine commit b215536852dc5a132108db92c90a41c70b738e50
shell32: Use wide char string literals.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2022-01-09 22:39:29 +01:00
Katayama Hirofumi MZ
f153b52dbb [SHELL32] Use IDI_SHELL_DOCUMENT for broken non-exe icons
CORE-16287
2021-12-24 02:47:31 +09:00
Katayama Hirofumi MZ
9078e34f3c
[SHELL32] Don't smartass-renaming on LNK files (#4020)
Renaming .LNK files had a bug that the selection won't include the extension-like filename part.
CORE-17807
2021-10-11 13:33:43 +09:00
Mark Jansen
9276b3f1bf
[SHELL32] CFSFolder: Add fallback for failing shell extension
CORE-17673
2021-09-21 21:42:25 +02:00
Hermès Bélusca-Maïto
9393fc320e
[FORMATTING] Remove trailing whitespace. Addendum to 34593d93.
Excluded: 3rd-party code (incl. wine) and most of the win32ss.
2021-09-13 03:52:22 +02:00
Mark Jansen
9fcdc68182
[SHELL32] Include the folder path in logging 2021-05-22 16:34:54 +02:00
Joachim Henze
f363c27ab4 [SHELL32] Demote 2 noisy goodpath loggings to TRACE CORE-17216
Those 2 did spam heavily when browsing folders with
many .zip files within. Mark Jansen confirmed that
this is good-path-logging and was just forgotten
to be disabled earlier.
2020-08-23 00:35:02 +02:00
Mark Jansen
679c95597c
[SHELL32] Fix sorting on size for big files
CORE-17205
2020-08-17 18:17:24 +02:00
Mark Jansen
83a9f71690
[SHELL32] Allow creation of an empty CFileSysEnum
CORE-16908
2020-05-19 20:35:52 +02:00
Mark Jansen
f379a29606
[SHELL32] Properly enumerate virtual shell folders (on files) as fake folders
CORE-16908
2020-05-17 17:09:04 +02:00
Mark Jansen
b1003ae909
[SHELL32] Update CFileSysEnum to be maintaineable
CORE-16908
2020-05-17 17:09:04 +02:00
Katayama Hirofumi MZ
2fad488a85
[SHELL32] Add 'm_' prefix to CFSFolder members (#2129)
CORE-7585
2019-12-05 05:35:25 +09:00
Katayama Hirofumi MZ
5734570a15
[BOOT][SHELL32][INCLUDE] Support 'SuperHidden' files (#2102)
PR #2101 shows desktop.ini files on Desktop. I want to hide them.
- Add "ShowSuperHidden" setting to Explorer.
- Add SHCONTF_INCLUDESUPERHIDDEN flag.
- Support SHCONTF_INCLUDESUPERHIDDEN in Explorer.
CORE-10045
2019-11-29 15:14:18 +09:00
Katayama Hirofumi MZ
cfdbccf937
[SHELL32] Follow-up of #2076 (#2091)
Fix EXE and SCR file icons. CORE-16533
2019-11-26 21:45:58 +09:00
Katayama Hirofumi MZ
399854ce31
[SHELL32] Set default exe icon (#2076)
The default icon of an exe file was empty if no icon available from exe.
CORE-10480
2019-11-24 19:26:32 +09:00
Mark Jansen
c31327114b
[SDK][SHELL32] Augment the internally used IDataObject with some extra formats
This is needed because our code seems to use CF_HDROP a lot, instead of HIDA...
2019-10-20 17:10:12 +02:00
Mark Jansen
5d54b65ceb
[SHELL32] Add support for custom View objects defined with UICLSID
CORE-16271
2019-10-19 18:42:15 +02:00
Thomas Faber
6b0d2c2a2c
[SHELL] Fix more IPersistFolder::Initialize prototypes. CORE-16385
Addendum to c2b476bd77.
2019-09-29 12:07:43 +02:00
Thomas Faber
b90c24d640
[SHELL] IPersistFolder2::GetCurFolder takes a PIDLIST_ABSOLUTE*. CORE-16385 2019-09-22 16:19:09 +02:00
Katayama Hirofumi MZ
d04b4e65d6
[SHELL32] Implement Explorer background image (Retrial of #801) (#1463)
IconArea_Image, IconArea_Text and IconArea_TextBackground values in desktop.ini in a folder will be supported. It denies network paths. CORE-5516
2019-04-05 07:59:35 +09:00
Katayama Hirofumi MZ
55469633cf [SHELL32] Add 'Properties' menu item in My Computer (#647)
- Add a Shell_DefaultContextMenuCallBack() helper function.
- Implement the IContextMenuCB interface in CDrivesFolder.
CORE-12509
2018-07-08 17:01:12 +02:00
Katayama Hirofumi MZ
1829f5fed7 [SHELL32] Fix desktop.ini folder icon again (retrial of #595) (#632)
#595 failed at non-Desktop folder. We should use ILGetDisplayNameExW instead of SHGetPathFromLDList to get path from psf and pidl.
CORE-9196
2018-06-24 19:59:03 +02:00
Katayama Hirofumi MZ
f8926dccbd [SHELL32] Fix desktop.ini folder icon (#595)
The folder icon location specified in desktop.ini of a folder should accept its relative path.
CORE-9196
2018-06-22 15:37:03 +02:00
Giannis Adamopoulos
48d88a3617 [SHELL32] CFSFolder: Fix some tests for GetAttributesOf 2018-02-19 02:01:02 +02:00
Colin Finck
c2c66aff7d Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers into modules, and delete rossubsys. 2017-10-03 07:45:34 +00:00
Renamed from reactos/dll/win32/shell32/folders/CFSFolder.cpp (Browse further)