03 Mar 2014



Look&Feel of the Start Menu

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:

Comparison 1

Comparison 2

Comparison 3

Comparison 4Comparison 5

Lastly, a sneak-peek of what is coming:

RShell in ReactOS

Yes, this is RShell running in ReactOS, with semi-working start menu.

Comments (11)

  • anon

    Very cool to see the start menu evolve!!

    Mar 03, 2014
  • anon

    Sorry, but I cannot agree with you. It's not "superior". The "redesigned" start menu, Explorer and shell in overall in Windows 7 was the main reason I've removed it from my PC and still using Windows XP and 2003, and I truly hate Microsoft for their decision to remove the "classic" interface. I also hate when someone decides what's better for me to use without even listening to my opinion first.So, I hope the ReactOS shell will end up much more flexible and configurable than the one you've proposed.

    Mar 03, 2014
  • anon

    We have no intention of removing the classic start menu, specially not after all the work I'm putting into it. XD

    Mar 03, 2014
  • anon

    My work is to fix missing things, for now. Once the missing bits are working, I may start adding new features.

    Mar 03, 2014
  • anon

    " http://www.classicshell.net/images/startmenu1.png "
    In windows 7, this menu does not exist. It is not necessary here to use the capabilities of third-party programs (either explicit example of this ClassicShell confirmation).

    Mar 05, 2014
  • anon

    We already have a start menu that looks like the windows one, what my work is about, is implementing the start menu in a way that is compatible with windows, so that if an user wants to install an application that modifies the start menu in some way, they can install it into ReactOS and it should also work. Alternative implementations like the old(current)-explorer, or hacks that add a start menu without following the interfaces used by windows, are not useful for that goal.

    Mar 03, 2014
  • anon

    I never said to remove the classic view, I asked if we will be adding a search box.

    Mar 04, 2014
  • anon

    As I said, the primary point is to implement the classes that handle the menus and toolbars in explorer.
    Once the basic functionality is working, the work will be to expand it with advanced functionality, like drag&drop.
    I WOULD like to see the searchbox implemented someday, yes, but for that we would need to see how Windows 7 does the searching,
    if those features are available in ReactOS, and if not, if they can be implemented into NT5 without architectural changes.
    (There is a real possibility that the start menu search makes use of the new search system they integrated into the shell,
    and in that case, I'm not enterely sure if it would be feasible without converting the shell to target Windows 7...)

    Mar 05, 2014
  • anon

    Thank you for your work and for this entry in the blog. It's really nice to know, at first hand, the work you all do on ReactOS... and with screenshots! Just amazing.

    Keep on the good work.

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