I am writing a notification system just like growl. The notification is a window and it's level is set to NSModalPanelWindowLevel. The only problem is, I have a button in that window and when the user wants to click that button, he/she has to click it twice. But, for example, in growl, no matter what window you have opened, you just simply click the notification and it registers a click. So is it a level problem? If so, what should I set it to? Thanks
In your custom controls that make up the view content of the window, you will likely want to override NSView
's -acceptsFirstMouse:
method to return YES
:
Discussion
The receiver can either return a value unconditionally or use the location of
theEvent
to determine whether or not it wants the event. The default implementation ignorestheEvent
and returnsNO
.Override this method in a subclass to allow instances to respond to click-through. This allows the user to click on a view in an inactive window, activating the view with one click, instead of clicking first to make the window active and then clicking the view. Most view objects refuse a click-through attempt, so the event simply activates the window. Many control objects, however, such as instances of
NSButton
andNSSlider
, do accept them, so the user can immediately manipulate the control without having to release the mouse button.