[comp.sys.mac.programmer] Hierarchical menus

tim@hoptoad.uucp (Tim Maroney) (02/06/90)

Does anyone feel there are some serious ergonomic problems with the
Mac's hierarchical menus?  You have to do an absolutely flawless
horizontal drag all the way over to the menu; any slight deviation from
the roughly 16-bit-wide path to the menu will change items.  However,
the screen layout suggests on an instinctive level that you should be
able to drag straight to the menu item item you want, diagonally; if
you do this, though, the submenu vanishes.  Particularly if the main
menu is wide, there is a lot more work than there should be in
selecting hierarchical menus, and a lot of opprtunities for error
through small accidental hand movements or instinctive attempts to get
directly to where one wants to go instead of straight across and then
straight down.

It would be better if the hierarchical menu poped up closer to the left
edge of the menu, say perhaps halfway across or even 40 pixels to the
right of the left edge.  There would be less narrow-path horizontal
movement that way (none if the mouse was already somewhat over to the
right.  But since this is all internal to MenuSelect, I haven't been
able to come up with a reasonable way to write an INIT to do this.
There's no trap to patch, except the entirety of MenuSelect, which
is both unsafe and a pain.
-- 
Tim Maroney, Mac Software Consultant, sun!hoptoad!tim, tim@toad.com

"Everything that gives us pleasure gives us pain to measure it by."
    -- The Residents, GOD IN THREE PERSONS

mystone@mondo.engin.umich.edu (Dean Yu) (02/06/90)

In article <10059@hoptoad.uucp> tim@hoptoad.UUCP (Tim Maroney) writes:
>Does anyone feel there are some serious ergonomic problems with the
>Mac's hierarchical menus?  You have to do an absolutely flawless
>horizontal drag all the way over to the menu; any slight deviation from
>the roughly 16-bit-wide path to the menu will change items.  However,
>the screen layout suggests on an instinctive level that you should be
>able to drag straight to the menu item item you want, diagonally; if
>you do this, though, the submenu vanishes.  Particularly if the main
>menu is wide, there is a lot more work than there should be in
>selecting hierarchical menus, and a lot of opprtunities for error
>through small accidental hand movements or instinctive attempts to get
>directly to where one wants to go instead of straight across and then
>straight down.
>
  Are you sure about this, Tim?  I move diagonally to items I want in submenus
all the time without having the H-menu disappear on me.  I'm checking this
as I write.  There seems to be a one second delay before the hierarchical
menu disappears, and the menu item that the cursor is over highlites.  Slipping
out of an H-menu back onto a normal menu item is another story, however...  I'm
not running any special INIT that causes the delay, either.  (Not that I'm 
aware of, anyway.)
  But hierarchical menus are a pain anyway....

_______________________________________________________________________________
Dean Yu                            | E-mail:    mystone@caen.engin.umich.edu
Mac Support &                      | Real-mail: Dean Yu
 Self declared License Czar        |            Rm 145 Chrysler Building
University of Michigan             |            2121 Bonnisteel
Computer Aided Engineering Network |            Ann Arbor, MI 48109
     INCLUDE 'Disclaimers.a'       | Phone:     (313) 763-3070
-------------------------------------------------------------------------------

sho@maxwell.physics.purdue.edu (Sho Kuwamoto) (02/06/90)

In article <10059@hoptoad.uucp> tim@hoptoad.UUCP (Tim Maroney) writes:
>Does anyone feel there are some serious ergonomic problems with the
>Mac's hierarchical menus?  You have to do an absolutely flawless
>horizontal drag all the way over to the menu; any slight deviation from
>the roughly 16-bit-wide path to the menu will change items.

Heh?  Not last time I checked.  It seems to me you can drag diagonally
down without changing menu items.  On Sunview and other systems, you
have to drag perfectly right.  Weird.

It is kind of a pain that you can't change menu items as easily when a
heirchical menu is up.  It responds quickly when you drag slightly left
while dragging down, but not so quick (feature, not bug) when you drag
slightly right.

-Sho
--
sho@physics.purdue.edu

d88-jwa@nada.kth.se (Jon Watte) (02/06/90)

In article <10059@hoptoad.uucp> tim@hoptoad.UUCP (Tim Maroney) writes:
>Does anyone feel there are some serious ergonomic problems with the
>Mac's hierarchical menus?  You have to do an absolutely flawless
>horizontal drag all the way over to the menu; any slight deviation from
>the roughly 16-bit-wide path to the menu will change items.  However,

>right.  But since this is all internal to MenuSelect, I haven't been
>able to come up with a reasonable way to write an INIT to do this.
>There's no trap to patch, except the entirety of MenuSelect, which
>is both unsafe and a pain.

Sanity check needed. Right. IM volume IV or V (don't have them handy.
V probably) clearly states that there _is_ a delay for dragging
diagonally to hirearchical menus, as well as a delay before the
menu actually pops up. Just tweak the right lo-mem global (or ROM
position ? :-( ) and it will do what you want.

This would be a simple INIT, I believe...

h+
-- 
   ---  Stay alert !  -  Trust no one !  -  Keep your laser handy !  ---
             h+@nada.kth.se  ==  h+@proxxi.se  ==  Jon Watte
                    longer .sig available on request

louis@asterix.drev.dnd.ca (Louis Demers) (02/07/90)

d88-jwa@nada.kth.se (Jon Watte) writes:
>Sanity check needed. Right. IM volume IV or V (don't have them handy.
>V probably) clearly states that there _is_ a delay for dragging
>diagonally to hirearchical menus, as well as a delay before the
>menu actually pops up. Just tweak the right lo-mem global (or ROM
>position ? :-( ) and it will do what you want.

>This would be a simple INIT, I believe...

	I too read that part, from IM V page 24,

	" Two delay values enable submenus to function smoothly, without
	jarring distractions to the user. The <submenu delay> is the
	lenght of time before a submenu appears as the user drags
	the pointer through a hierchichal menu item.  It prevents
    flashing due to rapid appearance-disappearance of submenus.
	The <drag delay> allows the user to drag diagonally from the
	submenu title into the submenu, briefly crossing part of the
	main menu without the submenu disappearing ..."

	But  nowhere does it say where those globals are stored.
	A long time ago, I looked for them without success.

	Can anybody give us the locations ?  Apple ?
	Can you spell CDEV ;-) ?

	My own opinion about the precision of the dragging required
	to get to a submenu is that the delay would be a much better
	solution.  Mr. Maroney's solution is interesting but would
	block the view of the parent item, and I think that would
	be very unpleasant.

	It would be interesting to play with those delay to see
	how they change the feel before changing anything.

	Louis

-- 
| Louis Demers              | DREV, Defence Research Establishment,Valcartier |
| louis@asterix.drev.dnd.ca | POBox 8800, Courcelette,Quebec, CANADA, G0A 1R0 |
|            (131.132.48.2) | Office: (418) 844-4424       fax (418) 844-4511 |
+---------------------------+-------------------------------------------------+

dj02+@andrew.cmu.edu (Dale Allen James) (02/07/90)

There IS a built-in "lag" time in hierarchical menus, but only when they
appear to the right. (if you run out of screen on the right, and the h-menu
is forced to left, you're out of luck).

Give it a try......you don't need to stay within that menu item's rect to get
at the h-menu items.....I don't recall how much time the user is given, but
this feature is documented in Inside Mac V.

Jeff

jwright@cs.iastate.edu (Jim Wright) (02/07/90)

I happened to be reading IM-V just before coming across this post.

	"Two delay values enable submenus to function smoothly, without
	jarring distractions to the user.  The submenu delay is the
	length of time before a submenu appears as the user drags the
	pointer through a hierarchical menu item.  It prevents flashing
	due to rapid appearance-disappearance of submenus.  The drag
	delay allows the user to drag diagonally from the submenu title
	into the submenu, briefly crossing part of the main menu, without
	the submenu disappearing (which would ordinarily happen when the
	pointer was dragged into another main menu item).  See Figure 3."

				-- IM-V, p.24

Naturally, no code is given.  No references to submenu delay or drag delay
are given.  The only reference in the IM X-Ref is to the above paragraph.
[Insert mandatory flame of documentation.]

--
Jim Wright
jwright@cs.iastate.edu

tim@hoptoad.uucp (Tim Maroney) (02/08/90)

In article <10059@hoptoad.uucp> tim@hoptoad.UUCP (Tim Maroney) writes:
>>Does anyone feel there are some serious ergonomic problems with the
>>Mac's hierarchical menus?  You have to do an absolutely flawless
>>horizontal drag all the way over to the menu; any slight deviation from
>>the roughly 16-bit-wide path to the menu will change items.  However,
>
>>right.  But since this is all internal to MenuSelect, I haven't been
>>able to come up with a reasonable way to write an INIT to do this.
>>There's no trap to patch, except the entirety of MenuSelect, which
>>is both unsafe and a pain.

In article <2857@draken.nada.kth.se> d88-jwa@nada.kth.se (Jon W{tte) writes:
>Sanity check needed. Right. IM volume IV or V (don't have them handy.
>V probably) clearly states that there _is_ a delay for dragging
>diagonally to hirearchical menus, as well as a delay before the
>menu actually pops up. Just tweak the right lo-mem global (or ROM
>position ? :-( ) and it will do what you want.

There is such a delay; it's far too short.  In testing, I have found
that if I don't drag the mouse in a very quick jerk (no, not John D.
Mathon), then the movement is too slow to fall within the delay time.

And no low-memory global to control the length of the delay is
documented in Inside Mac.

I think the problem may be that the delay is fixed, when it should be
proportional to the size of the submenu, because the average time to
get to a submenu item depends on the size of the submenu.
-- 
Tim Maroney, Mac Software Consultant, sun!hoptoad!tim, tim@toad.com

"But don't you see, the color of wine in a crystal glass can be spiritual.
 The look in a face, the music of a violin.  A Paris theater can be infused
 with the spiritual for all its solidity."
    -- Lestat, THE VAMPIRE LESTAT, Anne Rice

phaedrus@milton.acs.washington.edu (The Wanderer) (02/09/90)

In article <10059@hoptoad.uucp>, tim@hoptoad.UUCP (Tim Maroney) points out the
problems with hierarchical menus going away if you deviate from the narrow
drag path from the main menu to the hierarchical one, and how there's no
obvious way to patch for this because it's all internal to MenuSelect.

In article <2857@draken.nada.htk.se> d88-jwa@nada.kth.se (Jon W{tte) points
out that IM documents that there is a hierarchical-menu popup delay and drag
delay documented, but their locations are not.

     I've seen a CDEV that governs this exact thing (called MenuDrag, or
MenuSelect, or something like that).  There is indeed a popup and a drag
delay for hierarchical menus; their values are stored in the PRAM (the
extended area, I believe, so you'd have to use the xPRAM INIT to make changes
stick on a Plus).  I have no idea what the specific location is, however
(I'm at work and don't have my Mac or my IM manuals handy...)  Check the
ftp sites for the CDEV, and check the IM documentation of the PRAM bytes for
the exact location.
-- 
Internet: phaedrus@u.washington.edu        (University of Washington, Seattle)
  The views expressed here are not those of this station or its management.
   "If you can keep your head while those about you are losing theirs,
      consider an exciting career as a guillotine operator!"