Commit graph

59 commits

Author SHA1 Message Date
David Quintana 78790baf2e [RSHELL]
* Almost working keyboard navigation on horizontal menu bar. It does not yet switch between menus when a submenu of the shell menu is currently open and you press [right].
CORE-7586

svn path=/branches/shell-experiments/; revision=62891
2014-04-22 17:44:19 +00:00
David Quintana dc8f232870 [RSHELL]
* Implemented horizontal keyboard navigation on the menubar. Does not yet work for the Favorites menu, which is a shell popup and not a tracked popup. Also missing the system menu in the rotation.

svn path=/branches/shell-experiments/; revision=62757
2014-04-16 12:14:02 +00:00
David Quintana 5e4427d973 [RSHELL]
* Fix keyboard navigation on vertical popup menus. Navigating through the menubar does not work yet.
CORE-7586

svn path=/branches/shell-experiments/; revision=62753
2014-04-15 15:53:17 +00:00
David Quintana ba203171e1 [RSHELL]
* Fixed the context menu for shell items.
* Some more code style improvements.
* Moved the toggles between using system classes and rshell classes into the constructor functions, so the code is easier to read.
CORE-7586

svn path=/branches/shell-experiments/; revision=62752
2014-04-15 10:08:08 +00:00
David Quintana 9b472f38cb [RSHELL]
* Code cleanups and formatting.
* Remove the logging wrappers. If I need them again I'll bring them back.
* Try to fix a few "glitches" in the hot-tracking.

svn path=/branches/shell-experiments/; revision=62693
2014-04-09 11:45:02 +00:00
David Quintana c21f759be0 [RSHELL]
* Some code improvements, refactoring, and commenting.
* Using alternative method of handling hot-tracking, which does not break in win2003.
CORE-7586

svn path=/branches/shell-experiments/; revision=62681
2014-04-07 18:41:47 +00:00
David Quintana 97b02b410b [RSHELL]
* Further improvements. Not working yet. Commiting as backup/history.

svn path=/branches/shell-experiments/; revision=62603
2014-04-03 18:30:25 +00:00
David Quintana a875dbf317 [RSHELL]
* Improvements on the focus manager. The menus work better, but still not fully. Commiting for backup/history purposes.
CORE-7586

svn path=/branches/shell-experiments/; revision=62601
2014-04-02 17:37:37 +00:00
David Quintana 8676a39ebc [RSHELL]
* Redesigned large portions of the focus manager. All the mouse interactions seem to work now
CORE-7586.

svn path=/branches/shell-experiments/; revision=62567
2014-03-26 11:33:52 +00:00
David Quintana d2b33acd15 [RSHELL]
* Improve behaviour when hovering and clicking on the menubar. It's still somewhat glitchy though.
CORE-7586

svn path=/branches/shell-experiments/; revision=62539
2014-03-21 10:13:18 +00:00
David Quintana 0216102e0c [RSHELL]
* Improve mouse navigation of the menubar.
* Fix the menus.
* Fix the case for system includes (hopefully fixes).
CORE-7586

svn path=/branches/shell-experiments/; revision=62537
2014-03-20 15:39:25 +00:00
David Quintana ad40525f61 [RSHELL]
* Implement WH_MSGFILTER hooking to handle the popup menus from the horizontal menubar. Switching between menu items wby moving the mouse now works, but at the moment, the non-menu popups (including the start menu) are somewhat glitchy.
CORE-7586

svn path=/branches/shell-experiments/; revision=62534
2014-03-19 15:33:41 +00:00
David Quintana eaec85cafe [RSHELL]
* Begin work in improving the behaviour of the horizontal mode menuband. There's still a lot of work to do, and some things are temporarily worse than before, but in other places it has improved already.
CORE-7586

svn path=/branches/shell-experiments/; revision=62520
2014-03-17 12:33:03 +00:00
David Quintana 535f0f1c4e [RSHELL]
Whoops. MSVC does not not error with this... ;P

svn path=/branches/shell-experiments/; revision=62515
2014-03-16 09:30:29 +00:00
David Quintana aa699bf2a9 [RSHELL]
* Fix the hot tracking on the filebrowser menubar. Still does not handle switching menus while hovering, though.
CORE-7586

svn path=/branches/shell-experiments/; revision=62514
2014-03-16 09:28:51 +00:00
David Quintana 75f35dbf96 [RSHELL]
* Make this crazy nested conditional mess a bit flatter.

svn path=/branches/shell-experiments/; revision=62510
2014-03-15 21:44:49 +00:00
David Quintana bacc079c22 [RSHELL]
* Fix keyboard navigation and hottracking behaviour. One glitch remains where quickly moving the mouse to a parent's toolbar item, and returning to the submenu before it closes, won't restore the parent's hot item to the one with the submenu.

svn path=/branches/shell-experiments/; revision=62509
2014-03-15 21:38:15 +00:00
David Quintana 683375abdb [RSHELL]
* Fix reusing the same toolbar when SetMenu is called multiple times.
* Avoid some null dereferences.

[BROWSEUI]
* Temporarily (?) disable the logo band.

The browser window's "coolbar" and menubar now display and work properly in both Windows and ReactOS.

CORE-7586

svn path=/branches/shell-experiments/; revision=62472
2014-03-11 10:42:25 +00:00
David Quintana 6f06c27374 [RSHELL]
* Give TrackPopupMenuEx the top-level window. Need to figure out how Windows does this, it probably does not simply use the top-level window that way.
* Give TrackPopupMenuEx better flags and a better exclude rect.
CORE-7586

svn path=/branches/shell-experiments/; revision=62469
2014-03-10 12:01:37 +00:00
David Quintana 2ca6b95aeb [BROWSEUI]
* Load and use rshell for the menubar.
* Properly forward WM_NOTIFY and WM_COMMAND messages to the toolbars.

[RSHELL]
* Improve behaviour of horizontal menubands.
* Clicking on submenu items does not work yet.

CORE-7586

svn path=/branches/shell-experiments/; revision=62448
2014-03-07 22:28:55 +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 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 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 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
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