* CMenuBand: Implement rudimentary support for changing the hot item with the keyboard (up/down). The code can probable be simpler, and some corner cases need to be fixed, but it works.
* CMenuDeskBar: Attempt to redesign OnSelect to better match the windows behaviour, which is still mostly unknown.
* Make the log results more readable.
CORE-7881
svn path=/branches/shell-experiments/; revision=62262
* CMenuDeskBar: Use the submenu pointer to pass on the cancel events. Windows appears to call this with code=2 (cancellevel).
* CMenuBand: Begin implementing a focus manager for the menu windows. This class will take care of handling mouse and keyboard interactions, including closing the start menu and submenus when the user clicks outside the menu window.
CORE-7881
svn path=/branches/shell-experiments/; revision=62259
* Improve the logging system to allow using the same logger for both windows classes and rshell classes.
* Add a wrapper for CMenuSite.
* CMenuDeskBar: Reduce the log differences by keeping a cached copy of the client HWND.
* CMenuBand: Reduce the log differences by keeping a copy of the top level HWND. Will be used later.
CORE-7586
svn path=/branches/shell-experiments/; revision=62253
* Fix some more C-style casts, and misc coding style changes.
* CMenuBand: Create a skeleton of the functions that would handle SMIF_TRACKPOPUP submenus.
* CMenuDeskBar: Fix the redraw issue that prevented submenus from working as expected.
CORE-7886
svn path=/branches/shell-experiments/; revision=62248
* CMenuBand: Improve wrapper logging to get a better picture. Handle more SIDs on QueryService. Send selection messages on hot item changed and on execute.
* CMenuDeskBar: Improve wrapper logging to get a better picture. Handle more SIDs on QueryService. Begin handling more cases in OnSelect.
CORE-7881
svn path=/branches/shell-experiments/; revision=62243
* CMenuBand: Fix display of icons for the static toolbar.
* CMenuDeskBar: Fix positioning of the window not to cross the top edge.
CORE-7881
svn path=/branches/shell-experiments/; revision=62242
* Change C-style casts to static_cast where possible, and reinterpret_cast elsewhere.
* Make coding style and formatting more consistent.
svn path=/branches/shell-experiments/; revision=62239
- CStartMenu: add a test flag that makes the start menu show its submenus using SMIF_TRACKPOPUP in order to show how CMenuBand can use TrackPopupMenu
svn path=/branches/shell-experiments/; revision=62238
* CMenuBand: Improve the code structure.
* Make the class selection better managed.
Thanks Giannis.
CORE-7881
svn path=/branches/shell-experiments/; revision=62231
* CMenuDeskBar: Use the proper value for style in AdjustWindowRect.
* CMenuBand: Implement submenu hot-tracking timer. Not functional yet (submenu creation not implemented).
CORE-7881
svn path=/branches/shell-experiments/; revision=62227
- CMenuDeskBar: Implement showing a shadow. Implement closing the menu when it loses focus (this only works with the stock menu band for now)
svn path=/branches/shell-experiments/; revision=62225
- CMenuBand: Fix the size of the separators by setting iBitmap to 0 (which acts as the width of the separator).
- CMenuDeskBar:
Create the window only in CMenuDeskBar::SetClient and not in SetSite.
Greatly simplify SetSite.
Make sure that WS_EX_TOPMOST isn't removed when we call SetWindowPos
Do not forward requests for the SID_SMenuPopup service to the taskbar as this causes the menu band to capture the mouse for the taskbar and not the desk bar
svn path=/branches/shell-experiments/; revision=62223
* A couple small fixes before I go to bed.
* Add to CD, so explorer_new can be run in ros, with the custom classes.
CORE-7886
svn path=/branches/shell-experiments/; revision=62156
* Add more missing code. The custom CMenuDeskBand is now able to show the contents of a CMenuSite/CMenuBand in the right size, including the banner (not yet fully functional).
* Organize the method list in CMenuSite by interface.
[EXPLORER-NEW]
* Revert the hacks from r62134.
[PSDK]
* Add IUnknown_QueryServiceExec to shlwapi_undoc.h
svn path=/branches/shell-experiments/; revision=62149
* Port the implementation of CMenuDeskBar to rshell (still disabled by default).
* Begin implementing missing features:
- Notify the band of the icon size change from SetIconSize.
svn path=/branches/shell-experiments/; revision=62138
* Remove from build while it hangs VS2013.
[EXPLORER-NEW]
* Hack it to work on Windows 7, even if an existing explorer is already running.
* Move start menu popup to its own function, for easier debugging.
* Maybe-fix a drawing issue if no theme is selected.
[RSHELL]
* Added wrapper for CMenuBand
* The cmake script should not use a hardcoded path
* Better name for the log file.
CORE-7886
svn path=/branches/shell-experiments/; revision=62134
* Separate the wrapper logging code to its own file, to facilitate further debugging in other classes.
svn path=/branches/shell-experiments/; revision=62133
* Implemented a class that wraps CMenuBand, for the purpose of logging the calls, with parameters and returned values (disabled, set WRAP_LOG to 1).
* Partial (WIP) implementation of CMenuBand.
[ATL]
* VirtualAlloc can not have a non-zero size while using MEM_RELEASE.
svn path=/branches/shell-experiments/; revision=62132
- Add a tiny hack in browseui that allows it to browse properly when the user tries to open a folder in win8
svn path=/branches/shell-experiments/; revision=62082
- Do not embed a manifest in the resources in order to allow three different scenarios that can be accomplished by using two manifests
- In the first scenario we have filebrowser.exe + filebrowser.exe.manifest in the same folder. This should work only in windows xp, 2003 and reactos as it depends on the browseui that exists in windows
- The second scenario is to have filebrowser.exe + filebrowser.exe.manifest + browseui.dll in the same folder. This should also work in the same platforms as above but the core of the file browser will be used from the supplied browseui. However browseui will also request to instantiate some com objects implemented in browse and as a result some objects will be used from the browseui that exists in windows
- The third scenario is to have filebrowser.exe + filebrowser.exe.regfree.manifest + browseui.dll + browseui.sxs.manifest. This scenario should work in windows xp and all later versions. Note that filebrowser.exe.regfree.manifest must be renamed to filebrowser.exe.manifest. In this scenario all the functionality of the file browser window is used from the supplied browseui.dll
svn path=/branches/shell-experiments/; revision=62081
- Fix atl thunks to be allocated in executable memory and not from the stack in order to run libraries that use atl (such as browseui) in windows with DEP enabled
svn path=/branches/shell-experiments/; revision=62011
- Implement showing and closing the start menu by pressing the WIN key
- Implement handling WM_KLUDGEMINRECT message that informs the window manager the place of an application in the taskbar in order to show the minimization or maximization animation of a window
- Implement showing taskbar settings when the user selects to show the taskbar settings from the settings menu in start menu
- Implement hiding the Favorites menu in the start menu when needed
svn path=/branches/shell-experiments/; revision=62010
- Add an experimental module called FileBrowser.exe. This program works standalone in windows xp and windows 2003 and opens a new file browser window in its own process. If our browseui.dll is in the same folder, filebrowser will use the implementation of our file browser in windows. That means that standalone it works only in xp and 2003 but with our own browseui it will work on all windows versions (but doesn't work on all for now). This can be used for both testing the implementation of our file browser in windows and as a host process for new file browser windows for explorer_new.exe + rshell.dll
svn path=/branches/shell-experiments/; revision=61974
- Commit a great experiment for explorer. Our explorer will try to load a library called rshell.dll which will provide an alternative implementation of some functions that are built in in windows shell. These functions are CStartMenu_Constructor, SHCreateDesktop, SHDesktopMessageLoop, WinList_Init and ShellDDEInit. Providing our own implementation for these functions will allow us to make it run in all windows versions up to windows 8 and also test the implementation of our own components that will be placed temporarily in rshell.dll while they are developed and debugged in windows.
svn path=/branches/shell-experiments/; revision=61971
* Localize the message boxes that contained hardcoded strings.
* Create PrintErrorMsgBox() to reduce code duplication for the error messages.
* Brought to you by Lee Schroeder.
CORE-7339 #resolve #comment Committed in r61926. Cheers !
svn path=/trunk/; revision=61926
- memcpy --> RtlCopyMemory
- Remove a __debugbreak()
- Improve a bit the DPRINT that is displayed when a corrupted hive is loaded.
- Fix a comment.
- Implement saving the hive file name in the hive itself. According to what windows does (just open an existing hive file with your preferred hex editor 8^) ), you can see that it copies the last 31 unicode characters of the path, and terminate it by a NULL.
[NTOS]
Remove unneeded cast.
svn path=/trunk/; revision=61922
Remove spurious cast to CSR_API_MESSAGE. What should be noted is that CsrMsg is used by both VDM thing (via CheckVdmMsg pointer) and CreateProcess thing (via CreateProcessMsg), but one after the other (first VDM only, then CreateProcess only) so that, even if the common struct/union CsrMsg is used in both cases, there is no data corruption by, e.g. CreateProcess using pieces of VDM data and vice-versa.
svn path=/trunk/; revision=61913
- Implement NpQueryClientProcess and NpSetClientProcess
- Add a fast I/O dispatch table and implement NpFastRead and NpFastWrite
The NPFS driver is now good enough to boot Windows 2003 to desktop!
svn path=/trunk/; revision=61906