Re: Issue of NSStatusBar
Re: Issue of NSStatusBar
- Subject: Re: Issue of NSStatusBar
- From: anni saini <email@hidden>
- Date: Wed, 27 Feb 2013 14:59:16 +0800 (SGT)
I got the solution, just need to check for NSStatusBarWindow className as follows:
if([awindow isVisible] && ![aWindow aboutWin] && ![aWindow loginWindow] && ![[aWindow className] isEqual:@"NSStatusBarWindow"])
Thanks.
________________________________
From: Kyle Sluder <email@hidden>
To: Anil Saini <email@hidden>
Cc: "email@hidden" <email@hidden>
Sent: Tuesday, 26 February 2013 9:35 PM
Subject: Re: Issue of NSStatusBar
On Feb 26, 2013, at 9:16 AM, Anil Saini <email@hidden> wrote:
> Hi,
>
> I was facing issue of NSStatusBar getting closed by the [window close].
>
> In our application, we have used [NSStatusBar SystemStatusBar] to display menu. In a particular scenario, I need to close all the windows of my application except About and Login, so I wrote following function:
> - (void)closeIrrelevantWindows
> {
> NSSArray *allWindows = [NSApp windows];
>
> for(NSWindow *aWindow in allWindows)
> {
> if([awindow isVisible] && ![aWindow aboutWin] && ![aWindow loginWindow])
> [aWindow close];
> }
> }
>
> This call some times closes my NSStatusItem as well. Can anybody tell me whats wrong with the above code?
> I checked NSStatusItem and NSStatusBar class reference both are derived from NSObject.
In order to display anything, it needs to be placed in a window. Your code above is correct in that it doesn't send -close to any status bar items, but it *does* send -close to the invisible window that constrains them. That's why they disappear.
You'll probably want to do some more careful checking of the windows prior to sending them -close. Perhaps check the class of their window controller or their delegate.
--Kyle Sluder
_______________________________________________
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