Commit graph

46 commits

Author SHA1 Message Date
David Quintana
58931088c3 [RSHELL]
* Some menu style improvements.
* Some code style improvements.
* Added a skeleton CMergedFolder, as a base towards showing items from both the user and the common start menus. It does not work yet.
CORE-7586

svn path=/branches/shell-experiments/; revision=62330
2014-02-25 18:23:02 +00:00
David Quintana
53f74feb2d [RSHELL]
* CStartMenu: Now THESE are the right IDs. The previous ones were icon indices within the file.

svn path=/branches/shell-experiments/; revision=62329
2014-02-25 11:47:29 +00:00
David Quintana
5ee1aff4f5 [RSHELL]
* CStartMenu: Update the icon resource IDs to the IDs with the smaller images. This causes the images not to show. Need help figuring out why.
* Misc changes.
CORE-7586

svn path=/branches/shell-experiments/; revision=62328
2014-02-25 10:44:28 +00:00
David Quintana
2902b1cf0c [RSHELL]
* CMenuBand: Fix the keyboard navigation a bit. Still not fully working yet.
* Show submenus a bit closer to the arrow, as Windows does.
CORE-7881

svn path=/branches/shell-experiments/; revision=62323
2014-02-24 23:10:12 +00:00
David Quintana
9cf711a73f [RSHELL]
* CMenuBand: Fix menu colors.
CORE-7881

svn path=/branches/shell-experiments/; revision=62320
2014-02-24 13:05:24 +00:00
David Quintana
b62a6757ee [RSHELL]
* Move some classes to separate files.
* Move class declarations to .h files.
CORE-7586

svn path=/branches/shell-experiments/; revision=62319
2014-02-24 11:59:34 +00:00
David Quintana
8c18269e39 [RSHELL]
* Undo a test change that shouldn't have reached the commit. ;P

svn path=/branches/shell-experiments/; revision=62318
2014-02-24 11:20:16 +00:00
David Quintana
eee3377ec9 [RSHELL]
* CMenuBand:
  - Use a Pager control on top of the SF Toolbar, like Windows does.
  - Cache the ideal size of the toolbars to reuse it next time the start menu shows.
  - Draw the dropdown arrows on items with dropdowns.
  - Cancel the timer and open a submenu immediately if the item is clicked.
  - Draw the selected background color on the item with a popup if there is no other item being hovered.
  - Add some space for the dropdown arrows in the size calculations (hardcoded).
  - Simplify the size calculation and positioning.
CORE-7881

svn path=/branches/shell-experiments/; revision=62317
2014-02-24 11:07:16 +00:00
David Quintana
b6d033175c [CMAKE]
* Revert change from r62307. Will do a proper merge instead.

[RSHELL]
* CMenuBand: Use SHGetImageList instead of Shell_GetImageLists.
* CMenuBand: Remove minwidth in the size calculation.

svn path=/branches/shell-experiments/; revision=62308
2014-02-23 18:13:43 +00:00
David Quintana
04a3726c09 [CMAKE]
* Take MSVC workaround from trunk.

[RSHELL]
* Fix GCC build.
* Add a couple error checks.

svn path=/branches/shell-experiments/; revision=62307
2014-02-23 16:44:54 +00:00
David Quintana
d0f3e72c8e [RSHELL]
* CMenuBand: Send timer notifications for all items, so we can hide a previous submenu when the user hovers an item without submenu.
* CMenuBand: Avoid a stack overflow in some versions of windows by relying on the stored value instead of asking for it in the middle of a changed event.
CORE-7881

svn path=/branches/shell-experiments/; revision=62303
2014-02-23 15:02:02 +00:00
David Quintana
dcbd65feca [RSHELL]
* CMenuDeskBar: Actually use the Popup flags to decide on the relative position of the submenus.
CORE-7886

svn path=/branches/shell-experiments/; revision=62296
2014-02-23 00:15:27 +00:00
David Quintana
905ab8ebba [RSHELL]
* Take "DbgPrint" function from explorer-new.
* CMenuBand: Show placeholder if the band gets an empty IShellFolder. Added what I guess is a hack, to allow CMenuDeskBar to get the submenu popup from the band.
* CMenuDeskBar: Use WM_ACTIVATE and WM_ACTIVATEAPP to detect when the menu should be closed. Uses the hack above for the exception of showing a submenu.
CORE-7886

svn path=/branches/shell-experiments/; revision=62295
2014-02-22 22:59:28 +00:00
David Quintana
07467c9e06 [RSHELL]
* CMenuBand, CMenuDeskBar: Improve the SubMenu hierarchy and OnSelect flow. Now the menu will spread a FullCancel or Execute upwards and close the whole start menu.
CORE-7881

svn path=/branches/shell-experiments/; revision=62280
2014-02-21 10:00:00 +00:00
David Quintana
9f9be3f9bb [RSHELL]
* Improve the layout of the class definitions to make the important details easier to find.
* Rename private (non-COM) class methods to more appropriate names, including a prefix.
* CMenuBand: Make one submenu close before showing another one. This may not be happening in the same exact way windows does it.
CORE-7881

svn path=/branches/shell-experiments/; revision=62263
2014-02-20 16:18:49 +00:00
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
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