28 Apr 2014



Slowly getting closer...

Another week is over, and it’s time for me to look back and convert all my efforts into words.

If you recall from the previous report, I was trying to fix the keyboard navigation. I managed to find and fix the issue that caused my code not to process the key presses correctly. With that issue fixed, I could implement the code to switch left and right between popup menus, and shell menus, both between a popup and a shell menu (which was already working last week), and between a shell menu and a popup.

But, when the shell menu has a submenu open, although pressing the left key will properly close the submenu, and pressing right on an item with a submenu will properly open this submenu, as expected, pressing right while on a submenu does not cause the event to bubble upwards until the menubar receives it. I deduced the issue is in the way the OnSelect flows between classes, which makes me question if it may still be wrong.

While debugging these issues, I noticed that pressing the keys while on the filebrowser window, causes the keys to get received by both the menu, and the focused control (usually the listview that shows the file icons). After some investigation, I learned how to prevent these keypresses from reaching the other control, and I fixed this issue also.

Continuing with the keyboard navigation, I remembered that the navigation should also include pressing the enter key to launch items. I fixed some issues because the code wasn’t prepared to run items that way, and now it works.

Then, I decided to figure out and implement whatever system windows may use to tell a submenu to open with an item already selected. I noticed a flag in the Popup method of the deskbar, and I traced this to an Exec call to the band. After implementing this, I just had to add the flag to the appropriate calls to Popup, and now the keyboard navigation on the start menu feels better than ever.

The issue that caused the right key not to work on a submenu turned out to be more complex than I thought, and in the private monthly meeting the team decided that I should leave it aside since it was just a minor annoyance compared to all the things left to do and the effort it required, and my time would be better spent on more notable issues.

 Since I had been testing in windows 2003, I took the chance to compare the state of the file browser, compared to the original. I noticed some relatively small differences, and challenged myself to reduce them.

First, I fixed some size calculation issues on the menubar, then I reenabled the branding/logo box. Finally, I implemented the size calculation for the standard toolbar, which was completely missing.

With these changes, after unlocking the windows explorer toolbars (our explorer doesn’t support that toggle yet), and navigating in both windows to the same folder, we get a really interesting comparison screenshot. There are a few ways to tell which is which, can you find them?

Explorer window comparison

Discussion: https://www.reactos.org/forum/viewtopic.php?f=2&t=13274

This blog post represents the personal opinion of the author and is not representative of the position of the ReactOS Project.