Commit graph

64 commits

Author SHA1 Message Date
David Quintana 7529c9897c [RSHELL]
* CMenuSFToolbar: Keep the m_shellFolder pointer in a CComPtr, so that it doesn't get deleted and possibly reused for something else.
CORE-7586

svn path=/branches/shell-experiments/; revision=62429
2014-03-05 12:34:30 +00:00
David Quintana 11e4273379 [SHLWAPI]
* SHInvokeDefaultCommand is supposed to invoke the DEFAULT command, so why was bInvokeDefault given FALSE?!

[RSHELL]
* A couple of trivial fixes.

[NTUSER/USER32]
* I missed two bits. See CORE-7966 for more info on the menu issue.

CORE-7586

svn path=/branches/shell-experiments/; revision=62420
2014-03-05 09:12:40 +00:00
David Quintana d1e5c6a2b9 [RSHELL]
* I was telling AddButton that all the items were the last, except the last. Now the submenus display properly. Some of them at least. Others get an exception, it seems.
CORE-7881

svn path=/branches/shell-experiments/; revision=62416
2014-03-03 17:55:43 +00:00
David Quintana 7fe9315c7e [RSHELL]
* Improve logging in case of unexpected failures, and trace the creation of toolbar (menu) items.
CORE-7586

svn path=/branches/shell-experiments/; revision=62414
2014-03-03 16:11:47 +00:00
David Quintana 612d72cb58 [RSHELL]
* Move the copying back where it belongs. CMake may generate the dependencies the wrong way around (explorer-new should depend on rshell), but at least the copying works as expected, even if I always have to "build solution".
* Allow toggling between TBSTYLE_EX_VERTICAL and the manual TBSTATE_WRAP setting by (un)definiting TBSTYLE_EX_VERTICAL.
CORE-7881

svn path=/branches/shell-experiments/; revision=62412
2014-03-03 11:14:04 +00:00
David Quintana 9304a4e45f [RSHELL]
* Improve encapsulation of the CMenuToolbarBase by avoiding unnecessary usages of the window handle from the derived classes.
CORE-7881

svn path=/branches/shell-experiments/; revision=62411
2014-03-03 10:19:35 +00:00
David Quintana c3b293c4b2 [RSHELL]
* CMenuToolbarBase: Use TBSTATE_BREAK on every button instead of TBSTYLE_EX_VERTICAL. This allows the vertical alignment to work on ros, although the separators are neither sized nor drawn correctly, and the arrow alignment is wrong.
NOTE: It's still not functional. Second level submenus don't show up, and clicking on items does nothing.
CORE-7881

svn path=/branches/shell-experiments/; revision=62382
2014-03-02 19:35:13 +00:00
David Quintana 28bf05e265 [RSHELL]
* Move dependency copying to the target script, so that the target properly depends on the source and not the other way around.
* Make all the custom constructors WINAPI.
* Add all the custom constructors to the spec file.
CORE-7596

svn path=/branches/shell-experiments/; revision=62365
2014-03-01 11:46:04 +00:00
David Quintana b35ff38428 [RSHELL]
* Improve hot-tracking behaviour.
CORE-7881

svn path=/branches/shell-experiments/; revision=62347
2014-02-27 11:56:28 +00:00
David Quintana 107ae8ee41 [RSHELL]
* Add a new logging wrapper to record calls from the start menu back to the explorer site.
CORE-7586

svn path=/branches/shell-experiments/; revision=62335
2014-02-26 14:05:55 +00:00
David Quintana 8b06cd6325 [EXPLORER-NEW]
* Show the start menu at the same position and alignment Windows uses.

[RSHELL]
* Use IShellFolder methods instead of SHCreateShellItem.
* Handle toolbar window events from the toolbar class.
* Improve the positioning calculations.
* TODO: How to tell the submenus of the start menu to show towards the left? For when the taskbar is ABE_RIGHT.

CORE-7596

svn path=/branches/shell-experiments/; revision=62334
2014-02-26 11:13:23 +00:00
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
Amine Khaldi ddb3d908c9 * Sync up to trunk HEAD (r62285). Branch guys deserve the significant speedups too ;)
svn path=/branches/shell-experiments/; revision=62286
2014-02-22 10:31:26 +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