Re: forcing menu validation
Re: forcing menu validation
- Subject: Re: forcing menu validation
- From: Mudi Dandan <email@hidden>
- Date: Thu, 20 Nov 2008 04:39:27 +0100
On Nov 20, 2008, at 4:15 AM, Mudi Dandan wrote:
On Nov 20, 2008, at 4:01 AM, Quincey Morris wrote:
On Nov 19, 2008, at 18:34, Mudi Dandan wrote:
I'm using automatic menu validation.
The problem comes from that I exchange close window/close tab (as
in Safari) shortcuts during the validation process.
Unfortunately -validateUserInterfaceItem: doesn't seem to be
called when pressing a shortcut, so hitting command-w will close
the window instead of the current tab. Using the mouse it would
work fine.
Aside from the issue of whether this is a good thing to do, I think
it's not going to work because you're making an assumption that
isn't true.
Switching a key equivalent at validation time could only work if
all menu items were validated *before* the menu item corresponding
to the key equivalent is found. I just tried this, and AFAICT it
finds the menu item *first* and validates just that item. That
means you're pretty much out luck, as far as doing it at validation
time.
This behavior contradicts the documentation:
http://developer.apple.com/documentation/Cocoa/Conceptual/MenuList/Articles/EnablingMenuItems.html#/
/apple_ref/doc/uid/20000261-74653-BAJBGJHB
"When you use automatic menu enabling, NSMenu updates the status
of every menu item whenever a user event occurs."
I think we already knew that it didn't happen literally every
event, but the part about "every menu item" also appears to be
false in the key equivalent case.
It works with a little trick that whichever is being validated
(closetab: or closewindow:) I reassign the shortcuts for both items,
and shortcuts has to be restored in windowDidResignKey: so that
ordinary windows can be closed with command-w.
_______________________________________________
Ok, I can assure that it technically works but it seems that the menu
gets confused and it redraws the items with original shortcuts once
you hover over it with the mouse :(
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden