Commit graph

55992 commits

Author SHA1 Message Date
David Quintana
b1290e6ab0 [RSHELL]
* 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
2014-02-20 12:12:42 +00:00
David Quintana
e0d383ebd4 [RSHELL]
* 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
2014-02-19 20:35:50 +00:00
David Quintana
b6207043c9 [RSHELL]
* Reduce a few more log differences with windows.
CORE-7586

svn path=/branches/shell-experiments/; revision=62254
2014-02-19 13:58:28 +00:00
David Quintana
3b21639530 [RSHELL]
* 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
2014-02-19 12:19:50 +00:00
David Quintana
ea49280564 [RSHELL]
* Separate logger wrappers from the actual implementations.
* Fix some warnings.
CORE-7586

svn path=/branches/shell-experiments/; revision=62252
2014-02-19 00:20:45 +00:00
David Quintana
f1281f1369 [RSHELL]
* 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
2014-02-18 18:18:08 +00:00
David Quintana
7c921822b4 [RSHELL]
* 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
2014-02-18 13:55:57 +00:00
David Quintana
edfdf34624 [RSHELL]
* 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
2014-02-18 11:17:37 +00:00
David Quintana
662d8363c3 [RSHELL]
* CMenuBand: Fix submenu creation for shell folder menus.
CORE-7881

svn path=/branches/shell-experiments/; revision=62240
2014-02-18 11:05:20 +00:00
David Quintana
2b63295fea [RSHELL]
* 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
2014-02-18 10:26:50 +00:00
Giannis Adamopoulos
46e9b4d1e3 [rshell]
- 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
2014-02-18 09:18:16 +00:00
David Quintana
b42655951c [RSHELL]
* CMenuBand: Begin implementing submenus for shell items.
* CMenuBand: Begin implementing context menus.
CORE-7881

svn path=/branches/shell-experiments/; revision=62232
2014-02-17 18:38:31 +00:00
David Quintana
d5f6a80f41 [RSHELL]
* CMenuBand: Improve the code structure.
 * Make the class selection better managed.
Thanks Giannis.
CORE-7881

svn path=/branches/shell-experiments/; revision=62231
2014-02-17 17:16:55 +00:00
David Quintana
3aaf437172 [RSHELL]
* CMenuBand: Implement PopupItem for static menus.
 * CMenuDeskBar: Initialize m_Banner.
 * CStartMenu: Create CSubMenu_Constructor function that creates submenus (needs a better name/location).
 * Misc. code style changes.
CORE-7881

svn path=/branches/shell-experiments/; revision=62228
2014-02-17 16:41:10 +00:00
David Quintana
d28d1bb1df [RSHELL]
* 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
2014-02-17 15:38:55 +00:00
David Quintana
b71085bcc2 [RSHELL]
* CMenuBand: Handle WM_COMMAND and run SMC_EXEC for static menu items (Run, Shutdown).
CORE-7881

svn path=/branches/shell-experiments/; revision=62226
2014-02-17 11:20:35 +00:00
Giannis Adamopoulos
d29f9dcfef [RSHELL]
- 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
2014-02-17 10:42:52 +00:00
Giannis Adamopoulos
dc404583fd [rshell]
- 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
2014-02-16 21:53:21 +00:00
David Quintana
9a1d783d54 [RSHELL]
* CMenuBand: Bring the style closer to a menu.

svn path=/branches/shell-experiments/; revision=62214
2014-02-16 12:48:41 +00:00
David Quintana
60df5bae60 [RSHELL]
* CMenuDeskBar: Improve code style, and implement some more methods.

svn path=/branches/shell-experiments/; revision=62213
2014-02-16 12:48:29 +00:00
David Quintana
e325d1372e [RSHELL]
* CMenuSite: Improve code style.

svn path=/branches/shell-experiments/; revision=62212
2014-02-16 12:48:09 +00:00
David Quintana
c57c04a7c2 [RSHELL]
* 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
2014-02-13 23:49:19 +00:00
David Quintana
c486aa0a00 [RSHELL]
* 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
2014-02-13 20:16:30 +00:00
David Quintana
3bb9ee7f77 [RSHELL]
* 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
2014-02-12 19:46:24 +00:00
David Quintana
edd5a38091 [MPLAY32]
* 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
2014-02-12 17:48:49 +00:00
David Quintana
ea6aff329b [RSHELL]
* Separate the wrapper logging code to its own file, to facilitate further debugging in other classes.

svn path=/branches/shell-experiments/; revision=62133
2014-02-12 16:54:58 +00:00
David Quintana
5f6b18cc4d [RSHELL]
* 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
2014-02-12 16:48:36 +00:00
David Quintana
2dc8375579 [RSHELL]
* Implement CMenuSite
CORE-7879

svn path=/branches/shell-experiments/; revision=62131
2014-02-12 16:35:29 +00:00
Giannis Adamopoulos
372a7f9133 - Improve filebrowser a bit and add some FIXMEs to show what should be done later
svn path=/branches/shell-experiments/; revision=62118
2014-02-11 14:06:26 +00:00
Giannis Adamopoulos
239867bdd1 [browseui]
- 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
2014-02-09 21:32:07 +00:00
Giannis Adamopoulos
f47e7d9c12 [filebrowser]
- 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
2014-02-09 21:23:07 +00:00
Giannis Adamopoulos
f0aee80fcb [atl]
- 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
2014-02-06 13:07:37 +00:00
Giannis Adamopoulos
1724ea64fb [explorer_new]
- 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
2014-02-06 13:01:54 +00:00
Giannis Adamopoulos
c82da59af8 [undocuser.h]
- add the definition of the undocumented message WM_KLUDGEMINRECT

svn path=/branches/shell-experiments/; revision=62009
2014-02-06 13:00:48 +00:00
Giannis Adamopoulos
310ba0e356 [rshell.dll]
-cleanup the header from the remnants of my countless hacks that I tried with this module

svn path=/branches/shell-experiments/; revision=61979
2014-02-04 12:14:14 +00:00
Giannis Adamopoulos
222f0efde5 [rshell]
- Commit rshell.exe that allows explorer_new to run in windows 8

svn path=/branches/shell-experiments/; revision=61978
2014-02-04 12:11:51 +00:00
Giannis Adamopoulos
0a7da455d3 - Add filebrowser to build
svn path=/branches/shell-experiments/; revision=61976
2014-02-04 10:55:46 +00:00
Giannis Adamopoulos
3408d41c60 [filebrowser]
- 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
2014-02-04 10:49:39 +00:00
Giannis Adamopoulos
f52dad5f15 [explorer_new]
- 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
2014-02-04 10:41:02 +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
Amine Khaldi
d09f611410 [INTL]
* 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
2014-02-02 19:31:07 +00:00
Timo Kreuzer
5c4082a7a6 [CRT]
- add missing __CxxFrameHandler (stub)
- Add missing c++ aliases for x64
[MSVCRT]
- Update exports on x64

svn path=/trunk/; revision=61925
2014-02-02 19:05:01 +00:00
Hermès Bélusca-Maïto
8dddaf53b2 [CMLIB]
Use a #define instead of the magic 31.

svn path=/trunk/; revision=61923
2014-02-02 16:59:03 +00:00
Hermès Bélusca-Maïto
048856c9cc [CMLIB]
- 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
2014-02-02 16:45:48 +00:00
Amine Khaldi
bdb5664d61 [MSVCRT]
* Add the generated stubs file to build. Fixes some MSVC x64 link issues.

svn path=/trunk/; revision=61921
2014-02-02 15:47:52 +00:00
Eric Kohl
e63eb57839 [MSGINA]
Move the LSA connection code into a separate file. This connection code will later be used by the logon code too.

svn path=/trunk/; revision=61919
2014-02-02 12:12:59 +00:00
Amine Khaldi
cfe9329efe [CMAKE/GCC]
* Add -lgcc for C++ modules too. Dedicated to Timo.

svn path=/trunk/; revision=61918
2014-02-02 11:11:53 +00:00
Hermès Bélusca-Maïto
ce54d6a7e2 [KERNEL32]: Fix build by fixing variables types.
svn path=/trunk/; revision=61914
2014-02-02 00:17:16 +00:00
Hermès Bélusca-Maïto
1826feb50f [KERNEL32]
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
2014-02-02 00:08:54 +00:00
Timo Kreuzer
005703c2dc [NPFS]
- 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
2014-02-01 20:41:16 +00:00