Menubar on Windows???

Richard Gaskin ambassador at
Tue Dec 11 12:40:52 EST 2007

xavier.bury wrote:
> While the idea of a floating menubar is really nice (and so NeXT like!), 
> it does pose a few problems on windows:
> - win32 task bar object - rev here is a nightmare - click on one and the 
> menubar still stays behind/hidden for example...
> - If you hide the application, dont forget to hide the menu - but maybe 
> that's not wanted but maybe yes other times
> - submarining the menu as you mentioned - but sometimes it is the other 
> way around. And there's a bug in RR where the palettes are submarined by 
> the normal stacks (fixed in 2.9?)
> - it's not standard and most windows users hate separate menus (as far as 
> i've heard and seen them moan)
> - a separate menu steals more desktop real-estate than an included menu
> There's reasons why it could be cool but when you are used to menus being 
> always on top of the window, you dont have to look for them. 
> The same goes for a Mac user who sees their window while the menu of 
> another application (which is active with no [overlapping] windows) is 
> visible...
> just my two revcents...

I'd say more like a dollar's worth. :) You raise some very valuable 
issues, perhaps most importantly the consistency of the user experience 
for the person running your app in Windows.

Just as Mac users would find it disconcerting to have their menus at the 
top of the window rather than in the menu bar, Windows users are 
accustomed to having menus at the top of their window, and changing that 
long-established convention risks being accused of "a Mac port" (I've 
had that with the one app I still ship which has a detached menu bar).

In that app, we went that route because we had a very Mac Classic 
design, with lots of separate windows providing different views into the 

Since then, software design on the Mac has evolved to favor multiple 
panes in a single window where we used to use multiple windows.  For 
example, in the olden days video editing software commonly had at least 
three windows:  preview, timeline, and clips.  In iMovie and other 
modern apps these are now panes in a single window.  This migration to 
single-window UIs extends to email, iPhoto, tabbed web browsers, and a 
great many others.

With OS X this migration is esp. useful, since Apple has now joined the 
rest of the world with interleaved windows.  In Classic, all windows of 
an app came forward when any of them were clicked, but in OS X (and 
Window, UNIX, Linux, etc.) windows are fully interleaved: bringing a 
window forward only brings that one window forward, and any other 
windows, even those of the same app, are left where they were in the 
stacking order.

This interleaving creates a need for more window management than is 
needed with a single-window UI.  In older-style apps, to see all of the 
data views in various windows one would need to manually bring them all 
forward, or select "Bring All To Front" from the Window menu.  But if 
you migrate those views to multiple panes within a single window, just 
one click brings everything you need to the front.

For us Rev developers, this trend makes it easier to deliver 
HIG-conformant apps for all platforms, since we can make one menu bar in 
our one window and it'll display appropriately on OS X in the menu bar 
and at the top of the window for all other OSes.

But sometimes redesigning a multi-window app to a single-window one is 
challenging and will require some thought to how the panes are laid out. 
So while prepping for a future single-window version, there are a couple 
things that can be done to make a detached menu bar slightly less 
cumbersome on Windows:

In addition to adjusting the windowBoundingRect noted in my last post, 
there's also the minimize behavior.  For that we trap the iconify 
message in the mainStack, and when the window being iconified is the 
menu bar we iconify all stacks.  Similarly, when any stack is 
uniconified we make sure the menu bar stack is uniconified as well.

But tossing in my own $0.02, I would encourage those making apps with 
detached menu bars to consider migrating to a design which supports the 
Windows convention of having the menu bar at the top of the window. 
While a quickie Mac port can get away with a detached menu bar for a 
first version, to be successful on Windows you'll want to adopt standard 
Windows conventions.

And in the long term, if your app uses multiple windows you may find you 
can simplify your menu work while you simplify the user experience by 
migrating to multiple panes in a single window instead.

  Richard Gaskin
  Managing Editor, revJournal
  Rev tips, tutorials and more:

More information about the use-livecode mailing list