This week’s work began by improving the look&feel of the start menu so that it matches the Windows start menu better.
The first step was to improve the look of the menu: This included positioning, colours, dropdown arrows, icon sizes, etc.
I continued by trying to improve the feel of the menu: Hot-tracking behaviours, keyboard navigation, etc. The keyboard navigation keeps resisting me somewhat, though, as it tends to glitch when using the left/right arrow keys to open and close submenus, but moving up and down seems to behave as expected.
While I was working on these tweaks and improvements, I took the change to do some cleaning and reorganizing of the codebase, which is now easier to browse, and closer to how it will end up being when the day arrives and the rshell work gets imported into shell32.
Later in the week I started looking at other potential things to fix, since I felt I was spending too much time on details, while there are much larger things to fix in the taskbar and browser windows.
First of all, I looked at the CBandSite class of browseui, which is the class used by the taskbar as a container for the taskbar toolbars, including the toolbar the hosts the application window icons. Sadly, I discovered that the issue is not a lack of implementation, but the lack of support for a COM programming concept known as “Aggregation”, where one COM class can use another COM class’ interfaces as if they were their own. Supporting Aggregation requires some new classes in the ATL library of ReactOS, which sadly is beyond my knowledge to implement at this time.
Since I had already included the browseui DLL in my development environment, I took the chance to begin looking at the structure of the classes in it, so that I can one day begin working on the missing functionality in the browse windows.
For this week, I plan to take a look at explorer-new, as it runs in ReactOS, and I will try to fix some of the issues that prevent the start menu from properly working there. If there is time, I may go back to other outstanding issues, like the keyboard navigation, or I may instead begin work on browseui...
To close things, and since I know you all like pretty pictures, here come a series of image showing the evolution of the start menu look since last weekend:
Lastly, a sneak-peek of what is coming:
Yes, this is RShell running in ReactOS, with semi-working start menu.