FROM : Shawn Erickson
DATE : Fri Apr 08 19:33:38 2005
On Apr 8, 2005, at 9:46 AM, Luc Vandal wrote:
>
> On 8-Apr-05, at 12:43 PM, Shawn Erickson wrote:
>
>>
>> On Apr 8, 2005, at 9:29 AM, Luc Vandal wrote:
>>
>>> Basically there's a text field, check boxes, radio buttons and
>>> buttons. Like I said, makeFirstResponder is called every time I tab
>>> through the controls but the notification is only received once,
>>> when the window has closed.
>>
>> How did you subscribe to the notification? Did you try using the
>> delegate pathway?
>>
>> >From the code I see I don't see why you would be getting the
>> behavior you described.
>>
>> Are you running any type of run loop of your own while this window is
>> up?
>> Is it a modal window of some type?
>>
>> -Shawn
>
> here's how I register:
>
> NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
>
> [center addObserver:self
> selector:@selector(windowDidMakeFirstResponder:)
> name:@"WindowDidMakeFirstResponder" object:nil];
Is the window you are working with a modal window... application modal,
document modal (sheet), etc.?
My guess would be that you either have a sub-runloop in place or the
main runloop is in a particular mode while the window is being
displayed that is preventing delivery of the notification.
As a test you could modify the NSWindow subclass to change the modes
that the event should be delivered under.
Replace...
[[NSNotificationQueue defaultQueue] enqueueNotification:notif
postingStyle:NSPostASAP];
...with something like the following (consider adding
NSEventTrackingRunLoopMode as well if needed)...
NSNotificationQueue dq = [NSNotificationQueue defaultQueue]
[dq enqueueNotification:notif
postingStyle:NSPostASAP
coalesceMask:NSNotificationCoalescingOnName |
NSNotificationCoalescingOnSender
forModes:[NSArray arrayWithObjects:NSDefaultRunLoopMode,
NSModalPanelRunLoopMode, nil]];
-Shawn
DATE : Fri Apr 08 19:33:38 2005
On Apr 8, 2005, at 9:46 AM, Luc Vandal wrote:
>
> On 8-Apr-05, at 12:43 PM, Shawn Erickson wrote:
>
>>
>> On Apr 8, 2005, at 9:29 AM, Luc Vandal wrote:
>>
>>> Basically there's a text field, check boxes, radio buttons and
>>> buttons. Like I said, makeFirstResponder is called every time I tab
>>> through the controls but the notification is only received once,
>>> when the window has closed.
>>
>> How did you subscribe to the notification? Did you try using the
>> delegate pathway?
>>
>> >From the code I see I don't see why you would be getting the
>> behavior you described.
>>
>> Are you running any type of run loop of your own while this window is
>> up?
>> Is it a modal window of some type?
>>
>> -Shawn
>
> here's how I register:
>
> NSNotificationCenter* center = [NSNotificationCenter defaultCenter];
>
> [center addObserver:self
> selector:@selector(windowDidMakeFirstResponder:)
> name:@"WindowDidMakeFirstResponder" object:nil];
Is the window you are working with a modal window... application modal,
document modal (sheet), etc.?
My guess would be that you either have a sub-runloop in place or the
main runloop is in a particular mode while the window is being
displayed that is preventing delivery of the notification.
As a test you could modify the NSWindow subclass to change the modes
that the event should be delivered under.
Replace...
[[NSNotificationQueue defaultQueue] enqueueNotification:notif
postingStyle:NSPostASAP];
...with something like the following (consider adding
NSEventTrackingRunLoopMode as well if needed)...
NSNotificationQueue dq = [NSNotificationQueue defaultQueue]
[dq enqueueNotification:notif
postingStyle:NSPostASAP
coalesceMask:NSNotificationCoalescingOnName |
NSNotificationCoalescingOnSender
forModes:[NSArray arrayWithObjects:NSDefaultRunLoopMode,
NSModalPanelRunLoopMode, nil]];
-Shawn






Cocoa mail archive

