Commit graph

40 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 689777616b [SHELL32]
-CRegFolder: Implement CRegFolder::EnumObjects. Change its constructor to receive an extra parameter for the name of the key that should be enumerated.
-CEnumIDListBase: Add a new method called AppendItemsFromEnumerator to facilitate merging the contents from one IEnumIDList to another.
-Use the above in the enumerators of CControlPanelFolder, CDesktopFolder and CDrivesFolder to make them significantly simpler.

svn path=/trunk/; revision=75360
2017-07-16 15:13:02 +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 3b7b8b89b3 [SHELL32] -Remove IShellView_Constructor and CDefView_Constructor. Use SHCreateShellFolderView and SHCreateShellFolderViewEx instead.
svn path=/trunk/; revision=75289
2017-07-05 21:36:20 +00:00
Giannis Adamopoulos 40dcceff12 [SHELL32] -Add Comments as the 2nd column in CDesktopFolder, CDrivesFolder and CRegFolder. Add Type as the 3rd column in CRegFolder. This is not entirely correct. Our columns support is rudimentary, however we now show the comments stuff in the right place and the reg folder items have a type.
svn path=/trunk/; revision=75013
2017-06-12 18:38:26 +00:00
Giannis Adamopoulos f8555b75c4 [SHELL32]
- Rename the resource identifiers for column names to make sense. Get rid of one called File. This was renamed to Name but was the same in other languages, now it is replaced by Name for good. We also had two strings for a column called Comments and I think that in some languages one was singular and the other was plural. We only need the plural one. 
Note to translators: Please make sure that everything I changed makes sense. I had to edit all language files and there can be mistakes and typos.

svn path=/trunk/; revision=75011
2017-06-12 10:01:28 +00:00
Giannis Adamopoulos 2a0e4e58cf [SHELL32] -CDrivesFolder: Implement returning the appropriate type string in GetDetailsOf. Simplify GetDetailsOf and CDrivesExtractIcon_CreateInstance.
svn path=/trunk/; revision=75005
2017-06-11 14:02:14 +00:00
Giannis Adamopoulos 2769768c33 [SHELLUTILS.H]
- Remove the ShellObjectCreator templates that allowed the caller to pass an arbitrary interface pointer. Leaving only the templates that take an void ** ppv parameter means that the callers are forced to use IID_PPV_ARG. This makes it less likely to have a pointer to an wrong interface. 
- Fix the callers to always use IID_PPV_ARG.
- Rewrite the ShellObjectCreator templates to create the objects using the ATL CreateInstance thus allowing internal ATL methods to be called.

[BROWSEUI]
-Let CBandSite_CreateInstance take an additional parameter for the outer object since CBandSite is aggregatable. Create the object using the ATL creator class.

svn path=/trunk/; revision=74314
2017-04-14 20:03:46 +00:00
Giannis Adamopoulos 926c3cfb05 [SHELL32] Implement support for IID_IDropTarget in CDesktopFolder::GetUIObjectOf and CDrivesFolder::GetUIObjectOf. Fixes dragging items to the icons of My documents, Recycle bin or drive.
svn path=/trunk/; revision=73660
2017-02-01 13:31:55 +00:00
Giannis Adamopoulos 2e07736507 [SHELL32]
- CDefaultContextMenu: Fix the implementation of the QueryContextMenu to respect how IContextMenu should function. Don't ignore idCmdFirst and idCmdLast parameters. Return a correct HRESULT. For now I'm not sure how 0 cmd ids should be handled and if the standard menu items should also be affected by these parameters.

svn path=/trunk/; revision=73591
2017-01-24 16:35:36 +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 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 22c0bb2723 [SHELL32]
- Add CRegFolder using the guid item specific functions. So far it is only partly implemented with stuff like enumerating still missing.
- Use CRegFolder in CDesktopFolder, CDrivesFolder and CControlPanelFolder and stop using guid item specific functions.

svn path=/trunk/; revision=72188
2016-08-10 18:56:48 +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
Christoph von Wittich ddccdcbf31 [SHELL32] remove obsolete FIXME. was fixed in r68015
svn path=/trunk/; revision=72073
2016-08-01 14:37:27 +00:00
Giannis Adamopoulos 45aa3e9f88 [SHELLL32]
- Split GenericExtractIcon_CreateInstance into CGuidItemExtractIcon_CreateInstance, CFSExtractIcon_CreateInstance and CDrivesExtractIcon_CreateInstance.

svn path=/trunk/; revision=72041
2016-07-29 06:21:11 +00:00
Giannis Adamopoulos f03ca04852 [SHELL32]
- lnk files are .. files so don't pretend that CDrivesFolder and CControlPanelFolder can contain lnk files.
- Don't create a full pidl just to parse it right away (which is a costly operation) when an IShellLink is queried from a folder.
- Fix a bug in CDesktopFolder::GetDisplayNameOf that was exposed by changes above.

svn path=/trunk/; revision=71237
2016-05-03 09:15:36 +00:00
Giannis Adamopoulos 72a9b73970 [SHELL32]
- Remove IExtractIconA_Constructor and rename IExtractIconW_Constructor to GenericExtractIcon_CreateInstance which will handle both A and W.
- Make GenericExtractIcon_CreateInstance accept a pointer to a IShellFolder and a simple pidl.
- Avoid using SHGetPathFromIDListW. Use ILGetDisplayNameExW instead. May make loading icons for folders and exe files slightly faster as it does fewer I/O and less allocations.

svn path=/trunk/; revision=71227
2016-05-01 19:54:23 +00:00
Giannis Adamopoulos 42143e7d37 [SHELL32]
- Add an overload of SHSetStrRet which loads strings by default from shell32.
- Remove some dead code fomr CDrivesFolder.

svn path=/trunk/; revision=71213
2016-04-30 14:05:10 +00:00
Giannis Adamopoulos 61d4bb4dcc [SHELL32]
- Accept parsing paths like "C:". Also simplify CDrivesFolder::ParseDisplayName a bit.
Note: trying to run "c:" from the run dialog doesn't have the right result due to a bug in ShellExecute.

svn path=/trunk/; revision=71212
2016-04-30 12:52:17 +00:00
Thomas Faber 113dd2e1e9 [SHELL32]
- Correctly handle NULL pidls in CDesktopFolder::CompareIDs and CDrivesFolder::CompareIDs. Based on a patch by Sylvain Deverre.
CORE-10745 #resolve
CORE-10747

svn path=/trunk/; revision=71080
2016-03-30 11:11:37 +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
Giannis Adamopoulos 7d4f528f60 [SHELL32]
- Fix for drive free/total space in My Computer. Patch by Barrett Karish.
CORE-10264

svn path=/trunk/; revision=69374
2015-09-27 15:09:28 +00:00
Giannis Adamopoulos 8953816270 [SHELL32]
- Fix a bug in my latest commit.

svn path=/trunk/; revision=69330
2015-09-23 15:20:56 +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 cba771af31 [SHELL32] - Fix copy paste bug
svn path=/trunk/; revision=68912
2015-09-02 09:31:16 +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 0cb0f1e091 [SHELL32]
- Add a CDefView_Constructor that lets us keep the code simple for the shell folders.

svn path=/trunk/; revision=68768
2015-08-19 12:09:21 +00:00
Giannis Adamopoulos 078e6f5d12 [SHELL32]
- Use SHELL32_GetGuidItemAttributes, SHELL32_GetFSItemAttributes, SHELL32_BindToGuidItem and SHELL32_GetDisplayNameOfGUIDItem in CControlPanelFolder, CDrivesFolder and CFSFolder instead of using functions that accept all sorts of pidl types.

svn path=/trunk/; revision=68730
2015-08-17 11:41:15 +00:00
Thomas Faber c146d77c04 [SHELL32]
- Finally give up on that assert. It's not easily fixable
CORE-9839 or CORE-9844 or CORE-9845 or whatever

svn path=/trunk/; revision=68218
2015-06-21 05:21:30 +00:00
Thomas Faber cf0e32066c [SHELL32]
- Also make My Computer a singleton, as shown by the CMyComputer test. With r68210 and this commit, SHFileOperation on a large number of files is approximately 3 times as fast.
CORE-9839 #resolve

svn path=/trunk/; revision=68212
2015-06-20 17:52:28 +00:00
Christoph von Wittich 17d16d0718 [SHELL32]
fix reported disk size

svn path=/trunk/; revision=68015
2015-06-04 18:18:48 +00:00
Giannis Adamopoulos 7f9a543084 [SHELL32]
- Explicitly check for pidl type in GetAttributesOf method of CDesktopFolder and CDrivesFolder

svn path=/trunk/; revision=67018
2015-04-03 12:18:07 +00:00
Giannis Adamopoulos 747bbec4bb [PSDK]
- Make IsEqualGUID typesafe for c++

[SHELL32]
- Properly call IsEqualIID in _ILIsControlPanel. Should fix CORE-8891.

svn path=/trunk/; revision=66938
2015-03-28 21:11:42 +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