- CDefaultContextMenu: Make it respect the IContextMenu interface and expect menu id offsets instead of real menu ids and actually use the idCmdFirst and idCmdLast parameters in QueryContextMenu. Make the default part use and existed menu from the resources but changed accordingly so the ids of its elements can be adjusted to the next free id of the constructed menu. Rename InsertMenuItemsOfDynamicContextMenuExtension to AddShellExtensionsToMenu, DoDynamicShellExtensions to InvokeShellExt, and DoStaticShellExtensions to InvokeRegVerb. Make AddShellExtensionsToMenu and AddStaticContextMenusToMenu behave like QueryContextMenu to return the number of ids they occupy. Add two helpers SHGetMenuIdFromMenuMsg and SHSetMenuIdInMenuMsg to change the id that is contained in the lparam of WM_DRAWITEM and WM_MEASUREITEM before forwarding them.
- CDefView: When calling QueryContextMenu before using TrackPopupMenu, use 1 as the first id that will filled by the IContextMenu because we want 0 to be used as an indicator that the menu was canceled. Use SHGetMenuIdFromMenuMsg and SHSetMenuIdInMenuMsg to change the lparam of the messages forwarded to the IContextMenu accordingly.
- CDefViewBckgrndMenu: Add a hack so as to keep the code as simple as possible while respecting idCmdFirst and idCmdLast.
- CNewMenu: Remove a hack that was needed because WM_DRAWITEM didn't come with the menu id offset but with the real menu id.
- CDesktopFolder, CFSFolder: Make the callbacks avoid adding an extra separators.
After that shell extensions in menus should work better and callbacks to shell folders should really be able to add several menu items.
svn path=/trunk/; revision=75533
Keyboard devices must have an upperfilter (kdbclass) to work correctly. Detect these
devices using the Keyboard GUID class instead of using the inf section name.
svn path=/trunk/; revision=75532
[EVENTLOG]: Use the previous functionality; use also the internal LogfpAlloc() / LogfpFree() functions when dealing with buffers related to event log files.
svn path=/trunk/; revision=75527
- Always used pdb or hsdb, no more 'db'
- Add property to an PDB that describes if it's opened for read/write, and assert on this
- Add comments
svn path=/trunk/; revision=75489
- Implement RxSetRenameInfo()
- Implement the SL_OPEN_TARGET_DIRECTORY case in RxCreateFromNetRoot()
This implements renaming in RDBSS, and thus in NFS.
So far, renaming fails due to different NET_ROOT, I need to check why. So far, files are properly copied on rename failure.
CORE-8204
CORE-11327
CORE-13632
svn path=/trunk/; revision=75487
In RxRemoveNameNetFcb(), check if name was already removed. MS doesn't do this, but as we use double linked-list macros
that perform extra sanity checks, this is required. This can be called twice for a single FCB.
CORE-11327
CORE-13632
CORE-13636
svn path=/trunk/; revision=75480
Don't leak a handle when renaming a source file which is a MS mount point or a file without the reparse attribute while we can query its reparse information.
CORE-13635
svn path=/trunk/; revision=75478
-Improve the hack that lets it process arguments by using the process command line instead of the one shell32 gives to the cpl.
-Implement a new action called ActivateMSTheme that activates an msstyle file without showing any gui. If no file is passed, the classic theme is activated thus making it possible to switch themes from command line (or any other application may need to switch themes by launching desk.cpl).
svn path=/trunk/; revision=75476
Don't attempt to dereference NULL-ptr if CCB isn't set.
Fixes crash in RxFsdCommonDispatch() under rare circumstances.
CORE-11327
svn path=/trunk/; revision=75474
In spite of what its name may look like: SyncEvent is a notification event, not a sync event.
Use the correct event for synchronization. This avoids infinite wait in certain circumstances in RxScavengeFobxsForNetRoot()
CORE-11327
svn path=/trunk/; revision=75473