Copyright ©2001-2007 by OCSoftware. All Rights Reserved.

Tear-off Menus

Overview

One of extremely handy and convenient features of the late NeXTStep used to be its tear-off menus: any menu could be torn off, displayed in a separate window becoming a de-facto command palette.

For example, open TextEdit and try to set up the kerning of a text block: to reach the optimal state, it would need quite a number of "Tightens" or "Loosens", until the result is exactly as we wanted to. Having to unroll the complete menu list from the horizontal main menu Format Font Kern Tighten/Loosen quickly becomes a royal pain in the back.

That's why OCSmart Hacks allows any of the application's menus to be torn off and used separately.

User Interface

If OCSmart Hacks run and the tear-off menus are enabled, you'll find in each menu a new item, at its very bottom, named "Tear Off":

Selecting the item effectively tears off the menu: it immediately appears on the screen in its own window (with the "Tear Off" item disabled, for it is torn off already), and stays there until you close it clicking its red close box:

Note that Tiger – Mac OS X 10.4 – for some reason features a new (IMHO much uglier) look of the torn-off menu window titles, and that it does not display the close box anymore. Therefore, OCSmart Hacks 2.0 add a menu item "Close" into the context menu:

You can also move the menu anywhere using the mouse and the torn-off menu title (or right-dragging by any point inside the menu with the modifier, see Resizing and Moving Windows). It is possible to ask OCSmart Hacks to remember the menu position even when closed, placing it exactly at the same position again when torn off next time.

There are some exceptions to the placement of the "Tear Off" item. First, so as the "Quit" command stays at its standard place at the very end of the application menu, the "Tear Off" item is added before the standard "Quit" one. Also, in the application menu there is another item, "Tear Off Main Menu", which allows to tear off the complete horizontal menu of the application (of course, without the system fields like the Apple menu or menulets):

Secondly, since the "Tear Off" item is added when the application is launched, it would not stay at the end of dynamically created menus. A most natural example is the standard "Window" menu; the same would apply for any other menu whose contents the application updates at runtime. For the same reason, you may find menus which do not contain "Tear Off" at all: those are menus which were completely added dynamically at runtime, much later than OCSmart Hacks were able to add their "Tear Off" items.

Normally, torn-off menus float above all normal windows; in most situations it is desirable. Nevertheless, you may want some of them to freely mix with the normal windows, to be obscured (perhaps partially) by them. OCSmart Hacks make it possible, too: just right click or ctrl-click at a torn-off menu title, and select the desired mode from the pop-up menu:

Note that if a menu is in background, you can use the standard Cocoa way of controlling it without activating: -drag by title would move it without changing its level, -clicking would select a command, -dragging would allow to select commands from submenus, and so on. The OCSmart Hacks special window services work too: -rightclick anywhere into it brings the menu front, -click to the title sends it back, -rightdrag moves it around by any point inside the menu.

You can tear off as many menus as you want to. Of course the torn-off menus are remembered when the application quits and automatically shown next time it is launched. Besides, you can set up some menus to be torn off in all applications.

Customization

To customize the tear-off menu support, open the OCSmart Hacks window selecting the "OCSmart Hacks..." item from the application menu, and choose its "Tear-off Menus" tab:

The checkboxes are straightforward: if you switch "Disable tear-off menus", OCSmart Hacks will not support them in any application (launched after the change was made). The "in Address Book" checkbox allows to switch the tear-off menu support in the concrete application.

Note that the change would apply when the application is launched next time. Namely, if you cannot tear off menu and the "Always tear off..." item is disabled, although both the "disable" checkboxes are off, just terminate and relaunch the application: it means that you have enabled the tear-off menu support without quitting the application shortly ago.

Normally, OCSmart Hacks remembers the position a torn-off menu was last time placed to, and when the same menu is torn off again, it will be automatically placed to the same position. A menu which is torn off the very first time would be placed at the mouse position. If you want to, you can override this behaviour by switching on "Always tear off to the current mouse position", which means just that: the remembered position is never used.

The table contains the list of all menus which are torn off in this application, and also those which are set up to be torn off globally, but in this application are not torn off. Normally, as you begin to tear off menus, the first table column would contain their names, the second one would contain the positions to which they are placed, and the third would contain "--" for all the menus.

If you want some of the menus to be torn off in any application, just select them, and click the bottom right button "Same for all applications" (which becomes enabled as soon as there are some rows selected). The setting is recorded, and for such menus the third column contain the check mark, meaning "set up for all applications the very same way it is here and now". An example of this is the Window menu on the picture.

If you change the torn-off state of some menu which is set up to be torn off in any application, the third column reflects that by displaying the word "differs": that means the menu is torn off globally, but the local state in this application is different. One example is the Edit Find menu, which is torn off both globally and locally, but in this application it is moved to another position. Another example is Format Font, which is torn off globally, but not in this application.

To change settings you can again use the "Same for all applications" button. Namely, to make a menu not torn off globally anymore just close it in the current application (so that the second column displays "not torn off" and the third one "differs"), select it, and click the "Same for all applications" button.

If you want to learn more, check please also the Power User Help page: there are some special defaults which allow power users to further customize the tear-off menu behaviour.