• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Just a single didBecomeMain/didResignMain event being fired
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Just a single didBecomeMain/didResignMain event being fired


  • Subject: Re: Just a single didBecomeMain/didResignMain event being fired
  • From: James DiPalma <email@hidden>
  • Date: Sun, 29 Dec 2002 22:35:11 -0500

From: Thilo Ettelt <email@hidden>

I have a problem with a NSBorderless (custom shaped) window. In my controller, which is the window's delegate, i've put an NSLog between the brackets of '-windowDidResignMain' and '-windowDidBecomeMain'. But the NSLogs are doing their job just once - when the window has been openend and when i switched to a different window. When I switch back: no more windowDidBecomeMain event. And then again: no windowDidResignMain event.

I have not read any documentation lately and I'm too sleepy to go read some now, but I'm guessing that if your controller is logging during windowDidBecomeMain that your window did become main.

My first thought was that you might be confused by keywindow/mainwindow differences, but then I re-read your message and you clearly say that after windowDidBecomeMain logs that windowDidResignMain logs (does that mean that your window did resign main?).

I can only think of two reasons for not getting a second windowDidBecomeMain: your window is not becoming main, or your controller is no longer listening for this notification. Neither seems likely given that your window did resign main and that controllers (especially when nib allocated) don't usually disappear without notice.

So, I'm totally lost and can only recommend a few more logs. If you already have a window subclass, it would be easy to log during:
- (void)becomeMainWindow
- (void)becomeKeyWindow
- (BOOL)canBecomeMainWindow
Which will verify that your window is not actually becoming main without sending a notification to your controller. I can't think of why your controller would stop listening for this notification, so I doubt this is your problem. If this kind of trouble shooting makes you feel like progress is being made, you may also want to log during your controller's dealloc method (here I'm assuming that you remove this controller from its thread's notification center during dealloc).

I would also do something like this:
- (void) resignMainWindow
{
[super resignMainWindow];
NSLog(@"self 0x%.6x is main %d", self, [self isMainWindow]);
}
Which would verify that after didResignMainWindow that you are no longer main. But, I ask myself if this is even possble and can only answer that I don't think so. So why did I suggest it? just silly really, but I can't think of any reason why you only get one windowDidBecomeMain notification.


-jim


P.S. there is probably a better way to print self than 0x%.6x, but I don't know what it is.
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.
References: 
 >Re: Just a single didBecomeMain/didResignMain event being fired (From: "Kenneth C. Dyke" <email@hidden>)

  • Prev by Date: Re: Custom sheets without going application modal?
  • Next by Date: Public instance variables questions.
  • Previous by thread: Re: Just a single didBecomeMain/didResignMain event being fired
  • Next by thread: Fwd: ANNOUNCE: GNUstep Renaissance is out!
  • Index(es):
    • Date
    • Thread