Skip navigation.
 
mlRe: Position of NSStatusItem
FROM : Joachim Deelen
DATE : Fri Nov 23 23:26:43 2007

For me it's working flawlessly. I can't expose the complete code but I 
did something like the following

@interface StatusView : NSView {

   NSStatusItem *statusItem;            //!< The Status Area within the Menu-Bar
}
- (id)initWithStatusItem:(NSStatusItem*)statusBarItem;

@end

@implementation StatusView

- (id)initWithStatusItem:(NSStatusItem*)statusBarItem
{
   self = [super initWithFrame:NSMakeRect(0.0, 2.0, [statusBarItem 
length], [[statusBarItem statusBar] thickness])];
   
   if(self != nil) {
       statusItem = statusBarItem;
       [self setWantsLayer:YES];
       [statusItem setView:self];
   }
   return self;
}

@end

In some other Class the View and the Status Item are created:

- (void)awakeFromNib
{
   NSStatusBar *systemStatusBar = [NSStatusBar systemStatusBar];
   statusItem = [systemStatusBar statusItemWithLength:[userDefaults 
integerForKey:kPWPreferenceSize]];
   [statusView initWithStatusItem:statusItem];
}


I get the position on screen with the following:

NSRect rect = [[self.statusView window] frame];

The position is returned in absolute Screen coordinates. I really 
don't see your problem ;-(

BTW: I'm using Garbage-Collection so you won't see any retain/release 
or autorelease.

regards
Joachim


Am 22.11.2007 um 09:09 schrieb Peter Maurer:

>> The output is: "0.000000/0.000000" ... don't really know what's 
>> wrong with the code :-(

>
> If you're willing to venture into undocumented goodness, you might 
> want to have a look at this little category I wrote for a menu bar 
> calendar that was supposed to appear right below its NSStatusItem 
> years ago:
>
> //--
>
> @implementation NSStatusItem (PMForbiddenFruit)
>
>     - (NSWindow*)window {
>         if ([self respondsToSelector: @selector(_window)]) {
>             return [self performSelector: @selector(_window)];
>         }
>         return nil;
>     }
>
>     - (NSRect)frameInScreenCoordinates {
>         NSWindow *theWindow = [self window];
>         if (theWindow) {
>             return [theWindow frame];
>         }
>         return NSZeroRect;    // you better have a fallback strategy
>     }
>
> @end
>
> //--
>
> Peter.
> _______________________________________________
>
> Cocoa-dev mailing list (<email_removed>)
>
> 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:
> http://lists.apple.com/mailman/options/cocoa-dev/<email_removed>
>
> This email sent to <email_removed>

Related mailsAuthorDate
mlPosition of NSStatusItem [nexUmoja] Fabian… Nov 19, 23:14
mlRe: Position of NSStatusItem Joachim Deelen Nov 20, 22:11
mlRe: Position of NSStatusItem Joachim Deelen Nov 20, 22:57
mlRe: Position of NSStatusItem [nexUmoja] Fabian… Nov 20, 23:03
mlRe: Position of NSStatusItem Joachim Deelen Nov 20, 23:34
mlRe: Position of NSStatusItem [nexUmoja] Fabian… Nov 20, 23:59
mlRe: Position of NSStatusItem Peter Maurer Nov 22, 09:09
mlRe: Position of NSStatusItem [nexUmoja] Fabian… Nov 22, 11:37
mlRe: Position of NSStatusItem Joachim Deelen Nov 23, 23:26
mlRe: Position of NSStatusItem [nexUmoja] Fabian… Nov 24, 03:18