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>
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 mails | Author | Date |
|---|---|---|
| [nexUmoja] Fabian… | Nov 19, 23:14 | |
| Joachim Deelen | Nov 20, 22:11 | |
| Joachim Deelen | Nov 20, 22:57 | |
| [nexUmoja] Fabian… | Nov 20, 23:03 | |
| Joachim Deelen | Nov 20, 23:34 | |
| [nexUmoja] Fabian… | Nov 20, 23:59 | |
| Peter Maurer | Nov 22, 09:09 | |
| [nexUmoja] Fabian… | Nov 22, 11:37 | |
| Joachim Deelen | Nov 23, 23:26 | |
| [nexUmoja] Fabian… | Nov 24, 03:18 |






Cocoa mail archive

