[comp.sys.mac.programmer] Disabling menus when DA's are closed

erich@crash.cts.com (Eric Hicks) (03/01/91)

Just a quick question that is quite probably rather simply solved. An
application I'm writing never uses the edit menu while my main window
is frontmost. (ie active) I've dimmed the menu, which is easily accomplished
in ResEdit. My problem occurs with DA suppport. I can enable the menu
when the DA comes up easily, and I also figured out how to tell when the
user has chosen close from my file menu as a way to close a DA. My Problem
occurs when the user, clicks the close box of a DA. How can I find out
when this has happened so that I can dim the edit menu? I have a solution
that "works" but it's so ugly that it's not worth posting. E-mail response
is fine and I'll summarize to the net if there seems to be a need and the
solution isn't obvious. Code fragments in either Pascal or C are fine, as
they are relatively easy to inter-translate. If it's any help, I'm using
THINK C 4.0.  Thanks in advance...
-- 
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
<  UUCP: {nosc ucsd hplabs!hp-sdd}!crash!erich                 >
<  ARPA: crash!erich@nosc.mil                                  > 
<  INET: erich@crash.cts.com                                   >
<  DISCLAIMER: My opinions are a figment of your imagination.  >
<  "At last, after 2000 years of work, the Eludium PU-36       >
<               explosive space modulator."                    >
<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>

jspencer@p510.f22.n282.z1.mmug.edgar.mn.org (Jim Spencer) (03/03/91)

Eric Hicks writes in a message to All

EH> Just a quick question that is quite probably rather simply solved. 
EH> An application I'm writing never uses the edit menu while my 
EH> main window is frontmost. (ie active) I've dimmed the menu, which 
EH> is easily accomplished in ResEdit. My problem occurs with DA 
EH> suppport. I can enable the menu when the DA comes up easily, 
EH> and I also figured out how to tell when the user has chosen close 
EH> from my file menu as a way to close a DA. My Problem occurs when 
EH> the user, clicks the close box of a DA. How can I find out when 
EH> this has happened so that I can dim the edit menu? I have a solution 
EH> that "works" but it's so ugly that it's not worth posting. E-mail 
EH> response is fine and I'll summarize to the net if there seems 
EH> to be a need and the solution isn't obvious. Code fragments in 
EH> either Pascal or C are fine, as they are relatively easy to inter-translate. 
EH> If it's any help, I'm using THINK C 4.0. Thanks in advance... 

You should be disabling the menu whenever the DA's window is not in front.  In your main event loop, check FrontWindow.  If it is your window, then disable the menu.
 

--  

                   Jim Spencer (jspencer@mmug.edgar.mn.org)
[Do not use the @p510.f22.n282.z1.mmug.edgar.mn.org to reply - bounces mail]
               UUCP: ...jhereg!tcnet!vware!edgar!mmug!jspencer
                             FidoNet: 1:282/22.510

--

jeffb.bbs@shark.cs.fau.edu (Jeffrey Boser) (03/06/91)

jspencer@p510.f22.n282.z1.mmug.edgar.mn.org (Jim Spencer) writes:
> Eric Hicks writes in a message to All
> > Just a quick question that is quite probably rather simply solved. 
> > An application I'm writing never uses the edit menu while my 
> > main window is frontmost. (ie active) I've dimmed the menu, which 
> > is easily accomplished in ResEdit. My problem occurs with DA 
> > suppport. I can enable the menu when the DA comes up easily, 
> > and I also figured out how to tell when the user has chosen close 
> > from my file menu as a way to close a DA. My Problem occurs when 
> > the user, clicks the close box of a DA. How can I find out when 
> > this has happened so that I can dim the edit menu? I have a solution 
> > that "works" but it's so ugly that it's not worth posting. E-mail 
> > response is fine and I'll summarize to the net if there seems 
> > to be a need and the solution isn't obvious. Code fragments in 
> > either Pascal or C are fine, as they are relatively easy to translate
> > If it's any help, I'm using THINK C 4.0. Thanks in advance... 
> 
>You should be disabling the menu whenever the DA's window is not in front.
>In your main event loop, check FrontWindow.  If it is your window, then
>disable the menu.
>  
>                    Jim Spencer (jspencer@mmug.edgar.mn.org)

this will only chew up processor time, checking many times a second.  what
youneed to do is when the user clicks on a close box, call TrackGoAway,
then if true, check if it is yours or a DA's.  if a DA's, dim the Edit menu
and call CloseDeskAcc.  for other cases, dim the Edit menu when your
windows are activated, and undim it when they are deactivated.

.....Jeff

d88-jwa@byse.nada.kth.se (Jon W{tte) (03/06/91)

In article <> jeffb.bbs@shark.cs.fau.edu (Jeffrey Boser) writes:
+-jspencer@p510.f22.n282.z1.mmug.edgar.mn.org (Jim Spencer) writes:
+-+- Eric Hicks writes in a message to All
+-+- +- Just a quick question that is quite probably rather simply solved. 

+-+- +- An application I'm writing never uses the edit menu while my 
+-+- +- main window is frontmost. (ie active) I've dimmed the menu, which 
+-+- +- is easily accomplished in ResEdit. My problem occurs with DA 
+-+- +- suppport. I can enable the menu when the DA comes up easily, 

+-+-You should be disabling the menu whenever the DA's window is not in front.
+-+-In your main event loop, check FrontWindow.  If it is your window, then
+-+-disable the menu.

+-this will only chew up processor time, checking many times a second.  what
+-youneed to do is when the user clicks on a close box, call TrackGoAway,
+-then if true, check if it is yours or a DA's.  if a DA's, dim the Edit menu

Bzzzzt. I'm sorry. You were all very close, but step down behind
the curtains and we'll have some fabulous consolation prizes for
you.

The right answer is, of course, to check the windowKind of the
FrontWindow just before you call MenuSelect or MenuKey - it's
that simple. There won't be any noticeable delay before the menu
appears either (not even on the Classic...)

This is the way it's done in the Think Class Library, among
other places.

							h+@nada.kth.se
							Jon W{tte


"The IM-IV file manager chapter documents zillions of calls, all of which
seem to do almost the same thing and none of which seem to do what I want
them to do."  --  Juri Munkki in comp.sys.mac.programmer

dorner@pequod.cso.uiuc.edu (Steve Dorner) (03/06/91)

In article <1991Mar6.074201.13324@nada.kth.se> d88-jwa@byse.nada.kth.se (Jon W{tte) writes:
>The right answer is, of course, to check the windowKind of the
>FrontWindow just before you call MenuSelect or MenuKey - it's
>that simple. There won't be any noticeable delay before the menu
>appears either (not even on the Classic...)

You mean you would have a greyed-out menu that blackens when you press on it?
Why would a user press on a grey menu?

This strikes me as a Bad Idea.  It would be ok for menu items, but not
for entire menus.
--
Steve Dorner, U of Illinois Computing Services Office
Internet: s-dorner@uiuc.edu  UUCP: uunet!uiucuxc!uiuc.edu!s-dorner

zben@ni.umd.edu (Ben Cranston) (03/07/91)

In article <1991Mar6.074201.13324@nada.kth.se> d88-jwa@byse.nada.kth.se
(Jon W{tte) writes:

> Bzzzzt. I'm sorry. You were all very close, but step down behind
> the curtains and we'll have some fabulous consolation prizes for
> you.

Mighty gratuitous, especially since you COMPLETELY misunderstood the
actual subject of this thread...

> The right answer is, of course, to check the windowKind of the
> FrontWindow just before you call MenuSelect or MenuKey - it's
> that simple. There won't be any noticeable delay before the menu
> appears either (not even on the Classic...)

I've used this technique, though accidently omitting the check before
MenuKey introduced a very subtle bug in one of my applications.  This
approach works fine for turning menu ITEMS (the things that only appear
when you mouse down on the menu TITLE bar) on and off, since they are
not visible until MenuSelect is called.  However, the subject of this
thread is making the menu TITLES, which are visible ALL THE TIME, dim
and light.  According to user interface rules when all the choices are
dim the menu title itself should dim, if any choice is possible the
menu title should be lighted.  The quoted solution does NOT address
this problem...

As I said in private mail to the original poster, I've approached this
problem by writing a "fixmenu" routine that examines FrontWindow and
typically branches into three cases.  In the case that FrontWindow is
completely null (no windows on the screen at all) typically only OPEN and
QUIT in the FILE menu get lit.  If FrontWindow is one of MY windows then
I do whatever is necessary, if not then FrontWindow is a DA window and I
setup the menus for that case.

I call "fixmenu" on every activate and deactivate event.  When the front
window changes you should get one or the other most of the time.  The bad
case is when there are none of your windows at all and a DA comes and
goes.  I could not think of a better solution than calling "fixmenu"
after EVERY call to SystemClick.  This causes the menu bar to blink with
each DA click though.

Sorry, I cannot think of a better solution than trapping a changing
FrontWindow in the main event loop that will handle all cases.  If
anybody out there UNDERSTANDS the problem and has a better solution
please post it.

Ben Cranston <zben@umd2.umd.edu>
Computer Science Center Network Infrastructures Group
University of Maryland at College Park
of Ulm

"The good news is that Saddam Hussein will be prosecured for war crimes."
"The bad news is that it will be before the Senate Ethics Committee..."

hairston@henry.ECE.CMU.EDU (David Hairston) (03/07/91)

[jspencer@p510.f22.n282.z1.mmug.edgar.mn.org (Jim Spencer) writes:]
[] Eric Hicks writes in a message to All
[]
[] EH> Just a quick question that is quite probably rather simply solved. 
[] EH> An application I'm writing never uses the edit menu while my 
[] EH> main window is frontmost. (ie active) I've dimmed the menu, which 
[] EH> is easily accomplished in ResEdit. My problem occurs with DA 
[] EH> suppport. I can enable the menu when the DA comes up easily, 
[] EH> and I also figured out how to tell when the user has chosen close 
[] EH> from my file menu as a way to close a DA. My Problem occurs when 
[] EH> the user, clicks the close box of a DA. How can I find out when 
[] EH> this has happened so that I can dim the edit menu? I have a solution 
[] ... stuff deleted ...
[] 
[] You should be disabling the menu whenever the DA's window is not in front.
[] In your main event loop, check FrontWindow.  If it is your window, then
[] disable the menu.

you should adjustMenus() just prior to grabbing an event in your main
loop.  this action keeps your menu interface uptodate with respect to
the front window.  however, don't go overboard in adjustMenus().  you
can determine the "kind" of window in front by using FrontWindow() and
checking the value of ((WindowPeek) frontWindow)->windowKind.  if this
is negative the front window is a system window (i.e. a DA window).  if
this value is 2 then the window is an alert/dialog window.  if this value
is 8 (or better, you can set it yourself) then its an application window.

when disabling/enabling an entire menu don't forget to DrawMenuBar() to
show the change (you don't want to DrawMenuBar() for every call to
adjustMenus(), just when the menu bar needs updating).

for more details see Inside Macintosh Vol. I, Chap.s 9 & 11 (Window &
Menu Managers).

  -dave-  
hairston@henry.ece.cmu.edu

lippin@twinkies.berkeley.edu (The Apathist) (03/07/91)

In many articles, people write:
  <Ideas on ways to keep the menu enabling/disabling current>

The method I've found best for doing this is:

1)	Keep a "menus may be out of date" flag.

2)	Have a routine which checks the flag, and when it is set,
	updates the menu enablements and clears the flag.

3)	After an event which may change the enablements, set the flag.
	(Which events are included here depend on the application.
	For example, if you disable cut/copy/clear when a text
	selection is empty, clicks and keys can change it.  It's
	probably best to be liberal here, except for null events, as
	might be needed for a "Stop" command.)

4)	If the flag is set, use a zero sleep time in WaitNextEvent.

5)	On a null event, if the flag is set, call the updating
	routine, and go back for another event.

6)	When you get a click in the menu bar or a command key, call
	the updating routine before handling it.

This method ensures that, no matter how complex your menu enabling is,
most actions aren't slowed down by it, because the updating is done at
idle time.  The fourth clause ensures that the user won't be looking
at out of date menus while deciding what to do next, and the sixth
clause ensures that the menus are up to date when they're actually
used.

					--Tom Lippincott
					  lippin@math.berkeley.edu

       "But let me repeat myself, at the risk of being clear:
	There must be fifty ways to write your program."

d88-jwa@byse.nada.kth.se (Jon W{tte) (03/07/91)

In article <> zben@ni.umd.edu (Ben Cranston) writes:
>> Bzzzzt. I'm sorry. You were all very close, but step down behind
>> the curtains and we'll have some fabulous consolation prizes for
>> you.

>Mighty gratuitous, especially since you COMPLETELY misunderstood the
>actual subject of this thread...

Hmm... yeah... Well, I don't like TV much anyway :-)

>thread is making the menu TITLES, which are visible ALL THE TIME, dim
>and light.  According to user interface rules when all the choices are

Ooops. I forgot to say, call it at every (de)activate event...

>As I said in private mail to the original poster, I've approached this
>problem by writing a "fixmenu" routine that examines FrontWindow and

>I call "fixmenu" on every activate and deactivate event.  When the front

>Sorry, I cannot think of a better solution than trapping a changing
>FrontWindow in the main event loop that will handle all cases.  If
>anybody out there UNDERSTANDS the problem and has a better solution
>please post it.

Well, now that I _UNDERSTAND_, please let me suggest:

On deactivate: set a "clear menu flag" to 3

On activate: Hilight menu titles as appropriate

In event loop: Decrease flag one. If _transition to 0_
occurs disable menu. If user clicks in menu _after_
deactivate but _before_ "clear menu flag" goes up, make
an explicit check.

This way, you usually don't have a menu that flickers
on/off at each window change, but still behaves
reasonably well. (except for a menu title that goes
from black to grey when clicked upon _if_ the user
clicks on the item within 1/20th of a second after he
closed the last window. Yeah.)

Or you could continuously monitor FrontWindow through
your event loop, and check the windowKind field when
_that_ changes (if you don't trust the mac to bring you
activate and deactivate events for DAs...)

Gee, or you could use the Think Class Library and forget
about all that stuff, as I have :-)

					h+@nada.kth.se
					Jon W{tte

--
"The IM-IV file manager chapter documents zillions of calls, all of which
seem to do almost the same thing and none of which seem to do what I want
them to do."  --  Juri Munkki in comp.sys.mac.programmer

"The IM-IV file manager chapter documents zillions of calls, all of which
seem to do almost the same thing and none of which seem to do what I want
them to do."  --  Juri Munkki in comp.sys.mac.programmer

bin@primate.wisc.edu (Brain in Neutral) (03/08/91)

From article <1991Mar6.174029.4706@ni.umd.edu>, by zben@ni.umd.edu (Ben Cranston):
> I call "fixmenu" on every activate and deactivate event.  When the front
> window changes you should get one or the other most of the time.  The bad
> case is when there are none of your windows at all and a DA comes and
> goes.  I could not think of a better solution than calling "fixmenu"
> after EVERY call to SystemClick.  This causes the menu bar to blink with
> each DA click though.

Do also have the problem that when you have only one window and it goes
away, there is no deactivate?  When I've tried to solve this problem,
I think I ended up having to mess with menus on activates/deactivates
and window closes.  It's an ugly problem.

There's no need to make the menu bar blink unnecessarily, though.  Check
bit 0 of the menu flags word to see what the state of a menu is, *then*
figure out what it *should* be.  If they differ, then you need to redraw
the menu bar after the menu and its items are set properly, otherwise you
don't need to.  This way, the menu bar blinks only when a menu state changes.

--
Paul DuBois
dubois@primate.wisc.edu

dorner@pequod.cso.uiuc.edu (Steve Dorner) (03/08/91)

In article <1991Mar6.174029.4706@ni.umd.edu> zben@ni.umd.edu (Ben Cranston) writes:
>goes.  I could not think of a better solution than calling "fixmenu"
>after EVERY call to SystemClick.  This causes the menu bar to blink with
>each DA click though.

You're missing something obvious, as is the "count backwards from
3" poster.  Your fixmenu routine should CHECK the current state of
the menus in the bar, and only redraw the bar if it needs to change any
of them.  Call it as often as you like, and it won't flicker.
--
Steve Dorner, U of Illinois Computing Services Office
Internet: s-dorner@uiuc.edu  UUCP: uunet!uiucuxc!uiuc.edu!s-dorner

Lewis_P@cc.curtin.edu.au (Peter Lewis) (03/08/91)

In article <1991Mar6.174029.4706@ni.umd.edu>, 
        zben@ni.umd.edu (Ben Cranston) writes:
> As I said in private mail to the original poster, I've approached this
> problem by writing a "fixmenu" routine that examines FrontWindow and
> typically branches into three cases.  In the case that FrontWindow is
> completely null (no windows on the screen at all) typically only OPEN and
> QUIT in the FILE menu get lit.  If FrontWindow is one of MY windows then
> I do whatever is necessary, if not then FrontWindow is a DA window and I
> setup the menus for that case.

This procedure can also examine any other state dependend information (eg,
what the application is doing at the moment, what features are enabled,
whether the document has been modified).

> I call "fixmenu" on every activate and deactivate event.  When the front
> window changes you should get one or the other most of the time.  The bad
> case is when there are none of your windows at all and a DA comes and
> goes.  I could not think of a better solution than calling "fixmenu"
> after EVERY call to SystemClick.  This causes the menu bar to blink with
> each DA click though.

As I explaned in Email to the orignal poster, I simple call this every time
round the event loop.  To avoid flicker, I keep a shadow of the 
editMenuEndabled state, and only redraw the menu bar if it changes. I
don't have any problem with flicker, and I work on a Plus, and I dont
have any speed problems (after all, the OS routines called in the fixmenu
(I call it SetMenus) are all VERY simple (read/write a field in a record)).

Clearly if you were inclined, you could track down all the places where
your internal state changes, and track FrontWindow, and only call fixmenus
when any of them changed, but its much simpler and less error prone to 
simply call it every time round the event loop.  One problem I did have,
was that I had not enabled suspend/resume events, so my app lit the edit
menu up when it was switched out (because someone elses document window
was there), and left it lit when I was switched back, even though there
was no window.  It dimmed as soon as an event occured, so enabling
suspen/resume events fixed up the problem).

HTH,
   Peter.
-- 
Disclaimer:Curtin & I have an agreement:Neither of us listen to either of us.
*-------+---------+---------+---------+---------+---------+---------+-------*
Internet: Lewis_P@cc.curtin.edu.au              I Peter Lewis
Bitnet: Lewis_P%cc.curtin.edu.au@cunyvm.bitnet  I NCRPDA, Curtin University
UUCP: uunet!munnari.oz!cc.curtin.edu.au!Lewis_P I GPO Box U1987
AppleLink: Guy Kawasaki for Apple President!    I Perth, WA, 6001, AUSTRALIA
Has anyone ever found someone who used a Mac and then Changed To a PC?

jeffb.bbs@shark.cs.fau.edu (Jeffrey Boser) (03/09/91)

d88-jwa@byse.nada.kth.se (Jon W{tte) writes:

> In article <> jeffb.bbs@shark.cs.fau.edu (Jeffrey Boser) writes:
> > jspencer@p510.f22.n282.z1.mmug.edgar.mn.org (Jim Spencer) writes:
> > > Eric Hicks writes in a message to All
> > > > Just a quick question that is quite probably rather simply solved. 
> 
> > > > An application I'm writing never uses the edit menu while my 
> > > > main window is frontmost. (ie active) I've dimmed the menu, which 
> > > > is easily accomplished in ResEdit. My problem occurs with DA 
> > > > suppport. I can enable the menu when the DA comes up easily, 

[various responses, including mine, deleted]

> The right answer is, of course, to check the windowKind of the
> FrontWindow just before you call MenuSelect or MenuKey - it's
> that simple. There won't be any noticeable delay before the menu
> appears either (not even on the Classic...)

no, this is very wrong.  ok, in full, here is what should be done:

  deactivation or closing of your window:  undim the edit menu
  activation of your window:                 dim the edit menu

you can find out what window it is by checking the windowKind field of
the window's record (negative if it is the DA's)

if a DA is closed, another might be beneath it, so do not dim the menu.
if your window is opened, it will generate an activate event (if you create
  it invisible and ShowWindow() it)
if a DA is opened, it will generate a deact for your window

the problem with your way is that it deals only with menu items.  according
to the HINs, if an entire menu is innappropriate, dim it.  besides, dimming
all of the items only works on the first 32 (i think).

> This is the way it's done in the Think Class Library, among
> other places.

actually the Think Class Lib uses this method for specific menu *items*
not menus.  and the Think Class Library is more than a bit flakey in some
areas.  if you are writing anything worthwhile, it might be best to use TCL
only as a base, and build your own.

hairston@henry.ECE.CMU.EDU (David Hairston) (03/11/91)

[Eric Hicks writes in a message to All]
[] Just a quick question that is quite probably rather simply solved. 
[] 
[] An application I'm writing never uses the edit menu while my 
[] main window is frontmost. (ie active) I've dimmed the menu, which 
[] is easily accomplished in ResEdit. My problem occurs with DA 
[] suppport. I can enable the menu when the DA comes up easily, 

i thought this had died but apparently there's still some confusion.
if you are interested in a "simple" solution then model your event loop:

while (! done)
{
  adjustMenus();
  WaitNextEvent(...);
  ...
}

adjustMenus() keeps your total menu interface uptodate with the current
front window by noting the windowKind field, as mentioned before.
adjustMenus() should be efficient and be able to determine the
state of the menu bar and menus given the front window.  adjustMenus()
should also remember its previous state and only do work when the
menu state changes (i.e. in the simplest case when the front window
changes).  keep in mind that when the menu bar changes state (i.e. the
Edit menu is disabled) then you need to DrawMenuBar() to reflect the
change.  there may be situations where only the menus change and the
menu bar doesn't.

this approach is responsive, does not cause the menu bar to flicker,
accurate with respect to being uptodate and easily managed and works
for any type of front window.  it seems to be a simple alternative.
it also keeps your activeEvt and etc. handling simple.

  -dave-  
hairston@henry.ece.cmu.edu

zben@ni.umd.edu (Ben Cranston) (03/12/91)

In article <4017@uakari.primate.wisc.edu> bin@primate.wisc.edu writes:

> Do also have the problem that when you have only one window and it goes
> away, there is no deactivate?  When I've tried to solve this problem,
> I think I ended up having to mess with menus on activates/deactivates
> and window closes.  It's an ugly problem.

Paul brings up a very good point.  If there is exactly one window on the
screen and it is CLOSED (i.e. destroyed) there will be no deactivate event
because it is not going to the back, it is going AWAY.  Since there is no
other window to be brought forward, there will be no activate event either.
But, you still need to get the menu enables updated.  I suppose you could
put a call to FixMenu in whenever you close a window, but then the problem
of detecting a close to a Desk Accessory comes up again.  Expecially if the
Desk Accessory can "close itself", maybe with a button the application
cannot know about or even an explicit call to CloseDeskAcc from within itself.

The alternative of checking for a changed FrontWindow() in the main event
loop and keeping track of the menu state really changing to supress blinking
starts sounding better and better.

> There's no need to make the menu bar blink unnecessarily, though.  Check
> bit 0 of the menu flags word to see what the state of a menu is, *then*
> figure out what it *should* be.  If they differ, then you need to redraw
> the menu bar after the menu and its items are set properly, otherwise you
> don't need to.  This way, the menu bar blinks only when a menu state changes.

If you're careful you can do this with just two flags rather than one flag per
menu.  One saves the pre-modification state of the menu you are currently
updating, if the update changes the state of the menu the second flag gets set.
At the end, if the flag is set, you need to do a DrawMenuBar.

N.B. it looks like from a close reading of the Window and Event manager
chapters that you actually DO see activate and deactivate events for DAs
but GetNextEvent returns false, so an event loop that requires a true response
would never notice them.

Lawson.English@p88.f15.n300.z1.fidonet.org (Lawson English) (03/12/91)

Why not allow the Edit menu to be active when your none of your windows are
open (at least I think that's what you said you were NOT doing)? If the user
wants to edit something that doesn't exist, well, let him. You should only be
concerned with the cases where the user might be confused: if there is no window
open, there is nothing there to edit, and even the most naive user wouldn't
be confused when nothing happens when he selects "Paste," that way, your need
to activate/deactivate the menu has been simplified.


Lawson
 

--  
Uucp: ...{gatech,ames,rutgers}!ncar!asuvax!stjhmc!300!15.88!Lawson.English
Internet: Lawson.English@p88.f15.n300.z1.fidonet.org

bin@primate.wisc.edu (Brain in Neutral) (03/14/91)

From article <4746.27DDB39B@stjhmc.fidonet.org>, by Lawson.English@p88.f15.n300.z1.fidonet.org (Lawson English):
> wants to edit something that doesn't exist, well, let him. You should only be
> concerned with the cases where the user might be confused: if there is no window
> open, there is nothing there to edit, and even the most naive user wouldn't
> be confused when nothing happens when he selects "Paste," that way, your need
> to activate/deactivate the menu has been simplified.

You'd be surprised what can confuse users.  For instance, one might ask
"why does this stupid machine let me select Edit menu items when there's
nothing to edit?  Huh?  Huh?"

Remember, some people do not even understand how to double-click, even
after several sessions of working on a Macintosh.  (Yes, I observe this.)

--
Paul DuBois
dubois@primate.wisc.edu

hairston@henry.ECE.CMU.EDU (David Hairston) (03/16/91)

[Lawson.English@p88.f15.n300.z1.fidonet.org (Lawson English) writes:]
[] Why not allow the Edit menu to be active when your none of your windows are
[] open (at least I think that's what you said you were NOT doing)?

ERROR: bad human interface ...

  -dave-  
hairston@henry.ece.cmu.edu

Lawson.English@p88.f15.n300.z1.fidonet.org (Lawson English) (03/17/91)

Brain in Neutral writes in a message to All

BIN> You'd be surprised what can confuse users. For instance, one 
BIN> might ask "why does this stupid machine let me select Edit menu 
BIN> items when there's nothing to edit? Huh? Huh?" 
BIN> Remember, some people do not even understand how to double-click, 
BIN> even after several sessions of working on a Macintosh. (Yes, 
BIN> I observe this.

I thought about my reply later and came to the same conclusion (silly me, follow
the Human Interface Guidelines!). I've met several people who don't consider
themselves Mac experts: "I've attended a few seminars, but I don't understand
much about using it yet..."

Speaking of UserInterface violations, did you read the "Hot Keys" artcle in
Spring Issue of MacTech Journal? It gives an "intuitive" way of adding hot keys
to dialogs by searching the control list for titles and allowing the user to
press the first letter of the title to activate the button. "o" for "OK" and
"c" for "Cancel" are the examples given. Shades of Windows! (This article is
a Norton Utilities plug, BTW). I guess none of the programmers remembered that
cmd-C and cmd-O already had meanings, or maybe we are supposed to remember that
whilest using Norton, these keys have new, non-standard meanings (my "intuitive"
way of using "hot keys" is to press the command key first, but I guess I'm not
part of their targeted market).

It's all part of a MicroSoft plot to dilute the Mac by making it more Windows-like...


Lawson

Lawson

 

--  
Uucp: ...{gatech,ames,rutgers}!ncar!asuvax!stjhmc!300!15.88!Lawson.English
Internet: Lawson.English@p88.f15.n300.z1.fidonet.org