Commit graph

43 commits

Author SHA1 Message Date
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
Giannis Adamopoulos 123a0e6818 [SHELL32] -AddFSClassKeysToArray: Increase the size of the buffer for the value read from the registry. There are cases when 40 are not enough.
svn path=/trunk/; revision=75595
2017-08-17 16:35:16 +00:00
Giannis Adamopoulos 201f83b4b1 [SHELL32]
- Simplify SHELL32_CoCreateInitSF by letting the callers fill the PERSIST_FOLDER_TARGET_INFO. This lets us stop using _ILSimpleGetTextW in it which breaks the logic that pidls should be read only by their shell folder. Also add an overload for SHELL32_CoCreateInitSF  that makes it simpler to create a shell folder with a csidl.
- Add a SHELL32_BindToSF helper to share some logic that was duplicated in several shell folders.
- Move SHELL32_GetCustomFolderAttributeFromPath, SHELL32_GetCLSIDForDirectory and SHELL32_GetFSItemAttributes, SHELL32_BindToFS to CFSFolder.cpp as these were fs specific.
- These changes give finer control to shell folders for how the bind will be done and shares more logic that can be shared.

svn path=/trunk/; revision=75301
2017-07-07 20:34:27 +00:00
Giannis Adamopoulos 1d4fcbf920 [SHELL32]
- CDefaultContextMenu: Add rudimentary support for callbacks so as to let folders have item specific commands and remove all item specific code from this class.
- Implement context menu callbacks for CFSFolder, CRegFolder, CDrivesFolder in order to let them handle the properties item and let the CDrivesFolder add and handle the Format item itself.

svn path=/trunk/; revision=73243
2016-11-17 14:35:19 +00:00
Giannis Adamopoulos 6cf2a9fc0e [SHELL32]
- Implement filling in needed keys passed to CDefFolderMenu_Create2.
- CDefaultContextMenu: Remove the code that filled the array of keys as this is now moved to the implementation of the shell folder.

svn path=/trunk/; revision=73237
2016-11-15 20:14:56 +00:00
Giannis Adamopoulos f4a1861aab [SHELL32]
- SHOpenFolderAndSelectItems: Take into account buggy applications like firefox that like to pass full pidls in a PCUITEMID_CHILD_ARRAY.

svn path=/trunk/; revision=73160
2016-11-06 22:25:02 +00:00
Giannis Adamopoulos b183748a87 [SHELL32]
- Hackplement SHOpenFolderAndSelectItems by using the /select parameter of explorer.exe and selecting only the first of the requested items.
- Implement the "Find Target" button in the properties dialog of shortcuts to use SHOpenFolderAndSelectItems so as we can test it.
Based on the patch of Joachim Henze (reactosfanboy).
CORE-9367 

svn path=/trunk/; revision=73159
2016-11-06 21:51:46 +00:00
Giannis Adamopoulos 24fcf531e7 [SHELL32]
- Implement comparing child items in CompareIDs method of our IShellFolder immplementation in shell32 as this is the expected behaviour according to tests and documentation.
- This was removed after each folder got its own implementation (we used a single one from wine that did handle it).
May fix CORE-12106.

svn path=/trunk/; revision=73128
2016-11-04 23:11:29 +00:00
Giannis Adamopoulos 8a0defef3d [SHELL32]
- CNetFolder: Use the Folder class for the items shown. The same is done in shell extensions (in windows) that use the CDefaultContextMenu and want the Open and Explore verbs to be shown. This behaviour was first discovered by gigaherz when ntobjshex was tested in windows.
CORE-12086

svn path=/trunk/; revision=72891
2016-10-02 13:22:01 +00:00
Giannis Adamopoulos adffe02e6f [SHELL32]
- Handle failure in SHELL32_CompareDetails.

svn path=/trunk/; revision=72771
2016-09-22 16:22:44 +00:00
Giannis Adamopoulos 43728d3f66 [SHELL32]
- Get rid of the functions that handle guid pidls and move their implementation in CRegFolder.cpp.

svn path=/trunk/; revision=72208
2016-08-12 12:21:13 +00:00
Giannis Adamopoulos ecf30d78ed [SHELL32]
- Don't hardcode the path in the shell namespace in any folder appart for CDesktopFolder and CDrivesFolder.
- Make SHELL32_CoCreateInitSF slightly more generic and use it when we need to create and initialise a shell folder.
- Now SHELL32_BindToFS is used only by CFSFolder but SHELL32_CoCreateInitSF still uses the generic _ILSimpleGetTextW (it accesses the pidl).

svn path=/trunk/; revision=72167
2016-08-09 18:05:50 +00:00
Giannis Adamopoulos 5596ec9243 [SHELL32]
- HCR_GetClassName is not supposed to be specific for CLSID_MyDocuments
CORE-11363

svn path=/trunk/; revision=71509
2016-06-03 21:00:59 +00:00
Pierre Schweitzer 6e2ec32434 [SHELL32]
Don't use uninit var

svn path=/trunk/; revision=71222
2016-05-01 13:27:11 +00:00
Giannis Adamopoulos 3328daaf08 [SHELL32]
- Implement CompareIDs for the folders in the shell namespace. The previous implementation was a generic solution that just compared names.
- CDefView: Implement using CompareIDs method from the IShellFolder. Remove the previous implementation that was hardcoded in the CDefView and worked mostly for file items.

svn path=/trunk/; revision=69712
2015-10-26 15:07:44 +00:00
Pierre Schweitzer a2b2cb7dcf [SHELL32]
Backport Wine commit: 0efa2331e2f54b81480adeb588972ca16a8dab16
"Fix a cloned pidl leak (Coverity)." by Nikolay Sivov

CID 716480

svn path=/trunk/; revision=69674
2015-10-24 10:27:40 +00:00
Giannis Adamopoulos 466e9a0571 [SHELL32]
- Fix SH_ParseGuidDisplayName which was completely broken when I committed it.
- Use GUIDFromStringW instead of SHCLSIDFromStringW in _ILCreateGuidFromStrW. The latter needs the string to terminate right after the guid.

svn path=/trunk/; revision=69369
2015-09-27 10:52:10 +00:00
Giannis Adamopoulos f6bba8eac7 [SHELL32]
- Fix displaying the name of guid items.

svn path=/trunk/; revision=69347
2015-09-24 15:49:18 +00:00
Giannis Adamopoulos d7a9abc45b [SHELL32]
- Add a few helper functions: SH_ParseGuidDisplayName, SHELL32_SetNameOfGuidItem, SHELL32_GetDetailsOfGuidItem.
- SHELL32_SetNameOfGuidItem is based on a patch for CORE-5995
- Use the helpers in CControlPanelFolder, CDesktopFolder and CDrivesFolder. Implements getting the comment and renaming registry items in these folders and share some more code.

svn path=/trunk/; revision=69328
2015-09-23 15:02:05 +00:00
Giannis Adamopoulos 0ea9ff44f2 [SHELL32]
- Add a helper HCR_GetClassName function to load the name of a reg folder to a STRRET
- Further simplify CAdminToolsFolder, CFontsFolder and CMyDocsFolder

svn path=/trunk/; revision=69319
2015-09-22 18:11:32 +00:00
Giannis Adamopoulos bb8a6e700c [SHELL32]
- Rename SHELL32_BindToChild to SHELL32_BindToFS. Do not let it be used for guid items any more. Split SHELL32_GetCLSIDForDirectoryout of it and call it only when needed.
- Fix callers to use SHELL32_BindToGuidItem for guid items.
- Fix a bug in CFSFolder which marked folder items as files when a binding context was used.

svn path=/trunk/; revision=68885
2015-08-31 23:44:02 +00:00
Giannis Adamopoulos 8da2ae9374 [SHELL32]
- Make SHELL32_GetDisplayNameOfChild return the result via a STRRET. Fix all callers accordingly.
- Avoid any heap allocations if a shell folder needs to forward the GetDisplayNameOf call to a child.

svn path=/trunk/; revision=68877
2015-08-31 11:28:24 +00:00
Giannis Adamopoulos dc515c2a97 [SHELL32]
- Remove SHELL32_GetItemAttributes for good. It is never a good idea to have one function that handles many types of pidls.

svn path=/trunk/; revision=68873
2015-08-30 14:28:07 +00:00
Giannis Adamopoulos af3114c491 [SHELL32]
- When binding to a drive item try to initialize the new CFSFolder using IPersistFolder3. That allows us to get the path of the drive right from the pidl instead of getting a new reference to the CDrivesFolder and using GetDisplayNameOf for the pidl.

svn path=/trunk/; revision=68865
2015-08-29 21:09:29 +00:00
Giannis Adamopoulos c932cb9d3a [SHELL32]
- Only return the flags that the caller asked for in SHELL32_GetFSItemAttributes. Allows us to get rid of a hell lot of calls to CFSFolder::BindToChild which lead to many calls to FindFirstFile.

svn path=/trunk/; revision=68849
2015-08-28 15:08:19 +00:00
David Quintana b4e29c9de9 [SHELL32]
* Fix loading icon info from dekstop.ini. Also took the chance to remove some unnecessary convolution. The old code tried to load the info, but didn't actually make use of the returned string at all.
CORE-9002 #resolve #comment Icon loading should work now. Adding the default desktop.ini files in the right folders will be a followup issue.

svn path=/trunk/; revision=68828
2015-08-26 17:31:42 +00:00
Giannis Adamopoulos 7c1c03943f [SHELL32]
- We are not wine so we can speed things up by trying to read desktop.ini only for system folders.

svn path=/trunk/; revision=68786
2015-08-21 16:03:14 +00:00
Giannis Adamopoulos db8269be53 [SHELL32]
- Fix a regression in SHELL32_GetFSItemAttributes found by our tests.

svn path=/trunk/; revision=68738
2015-08-17 13:34:38 +00:00
Giannis Adamopoulos 8faea71a4d [SHELL32]
- Split SHELL32_GetItemAttributes to SHELL32_GetGuidItemAttributes and SHELL32_GetFSItemAttributes.
- Add a couple helper functions that will reduce code duplication in folders with reg items: SHELL32_BindToGuidItem, SHELL32_GetDisplayNameOfGUIDItem

svn path=/trunk/; revision=68729
2015-08-17 11:36:56 +00:00
Hermès Bélusca-Maïto 42c3492b5c Revert tree-restructure attempt: r66583, r66582, r66581, r66578, sauf ntdll changes, r66576 and r66575 sauf mvdm changes (ok with Aleksander).
svn path=/trunk/; revision=66588
2015-03-06 14:33:02 +00:00
Hermès Bélusca-Maïto 829e58590e [SHELL]: Move shell dlls to where they should belong.
CORE-9111

svn path=/trunk/; revision=66582
2015-03-06 01:26:58 +00:00
Amine Khaldi 5c1a8109c8 * The Shell.. for a long time we dreamed of having a compatible, properly working rewrite, but it's easier said than done. Over the years this effort has been split into tasks, and this branch was the biggest overall. Now it's time to merge it back to trunk!
* This merge is also a chance to thank every single person involved directly and indirectly in this epic work, among them: Martin Fuchs for ReactOS explorer which we are respectfully retiring now, as it served the project so well over all these years. Thomas Bluemel (Thomas Weidenmueller aka w3seek) for his brave work on the shell, mainly his explorer_new. Andrew Hill for advancing the shell bringup with some impressive work. David Quintana, Giannis Adamopoulos and Huw Campbell for working as a solid team on making this branch a huge success, allowing the shell rewrite dream to finally become a reality. Again, thank you all!
* Merging this branch is not the end.. it's the beginning of some serious bug fixing based hopefully on the Community's continuous feedback.
* Finally, here are *some* of the highlights of this branch (simply put):

[BROWSEUI] Halfplement the address bar. Mostly implement the Favorites menu. Implement handling most hotkeys that should be handled by CShellBrowser. Fix various bugs.

[EXPLORER_NEW] Convert to C++ and use several wtl-like classes to simplify it. Fix several bugs and implement misc missing features.

[FILEBROWSER] A small exe file that opens a new file browser window in its own process. Tested to work in windows. It can be used to test our browseui.dll in windows.

[FONTS] A new marlett font.

[MSGINA] Add a proper shutdown dialog that's used when the user selects shutdown from the start menu (this is how it's done in Windows).

[RSHELL] A temporary module that hosts the implementation of the following classes needed for the shell: CMenuBand, CMenuDeskBar, CMenuSite, CMergedFolder, CStartMenu. These were implemented and tested in windows and for that reason they are still there. Should be moved in shell32 in the future.

[SHELL32] Reorganize files to isolate the ones that are not yet forked from wine. Fix various problems. Simplify the implementation of some shell folders. Implement filling in the file menu in the file browser.

[STOBJECT] A shell extension responsible for misc taskbar notification icons. So far only the sound icon is implemented. Adding this is necessary as the old explorer had the sound icon built in and deprecating it needs a proper solution for these notification icons.

[WIN32K] Fix several bugs that prevented the new start menu (that was implemented and tested in Windows) from functioning properly in ReactOS, mostly due to focus issues. Fix several shell notifications to behave more like in Windows.

* Tonight! We shall feast!
* And tomorrow the US guys shall feast again, on turkey! :p

CORE-7330

svn path=/trunk/; revision=65496
2014-11-26 19:49:18 +00:00
Aleksandar Andrejevic de7b63edc1 [SHELL32]
- Greatly optimize file icon retrieval by reducing the times we try to access the disk.
- Store icons in a binary tree in the shell icon cache for faster retrieval.
Patch by Huw Campbell committed at the request of Giannis Adamopoulos.


svn path=/trunk/; revision=63845
2014-08-09 13:40:13 +00:00
Amine Khaldi 527f2f9057 [SHELL/EXPERIMENTS]
* Create a branch for some evul shell experiments.

svn path=/branches/shell-experiments/; revision=61927
2014-02-02 19:37:27 +00:00
Giannis Adamopoulos 52f2ffa3e3 [shell32]
- Fix a couple of bugs I introduced in latest commit

svn path=/trunk/; revision=60945
2013-11-11 17:49:30 +00:00
Giannis Adamopoulos af7bc02893 [shell32]
- Add IID_PPV_ARG macro and use it in shell32 to make querying object interfaces type safe

svn path=/trunk/; revision=60941
2013-11-11 16:42:16 +00:00
Amine Khaldi 2bd930547c * Slap *some* sense into our header inclusions.
* This significantly shrinks the dependency tracking data and the compiled objects size, which speeds up the whole build process (especially the incremental builds) accelerating the daily development as a result.
* No intended code changes, ~27% smaller build. Enjoy ;)

svn path=/trunk/; revision=58214
2013-01-24 23:00:42 +00:00
Rafal Harabien e7f2a28453 [SHELL32]
- Load shell extensions from Directory key only for file system directories. Fixes New menu being added to special folders context menu (for example My Computer or Control Panel)
- Load shell extensions from AllFilesystemObjects only for files and directories
- Hardcode special folders attributes in proper place

svn path=/trunk/; revision=54985
2012-01-16 19:54:24 +00:00
Rafal Harabien 9286dc7ef8 [SHELL32]
- Fix Recycle Bin attributes. Context menu does not have "Delete" option anymore.
- Minor code improvements

svn path=/trunk/; revision=54687
2011-12-18 22:56:13 +00:00
Rafal Harabien d3a1887d23 [SHELL32]
- Formatting + some minor changes

svn path=/trunk/; revision=54684
2011-12-18 21:54:04 +00:00
Rafal Harabien 7a0ad93bff [SHELL32]
- Revert 54075 hack (registration from old shell32 based on WINE), so things does not get registered twice. Two Control Panels in MyComputer are no longer visible
- Fix all regressions, which was hack-fixed before. 
- Add more debug output in case of errors

svn path=/trunk/; revision=54673
2011-12-17 22:48:16 +00:00
Claudiu Mihail c10be1a84f [shell32]
- Fix a few more winetests in shlfolder tests.

svn path=/trunk/; revision=54303
2011-11-05 20:09:30 +00:00
Amine Khaldi 3bb734fcf3 [SHELL32]
* Reintegrate the c++ shell32 branch. Exemplary team-work.. kudos !
* Better code quality, more tests run with less failures... and more.
* Dedicated to everyone who helped ;)

svn path=/trunk/; revision=53653
2011-09-09 10:55:09 +00:00