I changed the subject line because if I could just get the screen coordinates 
of my Status Item, my kludge for giving it keyboard focus looks like it will 
work.

NSMenu inherits from NSObject, and as far as I can see give no clue regarding 
its location on the screen.  NSStatusItem and NSStatusBar are likewise mum.

However, the status item has an image.  I subclassed NSImage, found that 
-drawInRect:fromRect:operation:fraction:respectFlipped:hints: is invoked.  From 
reading the Cocoa Drawing Guide, it seems that the tx value of the current 
transformation matrix when this method is running is the x-coordinate that I'm 
looking for.  So I subclassed NSImage…

@implementation MyLocatableImage

- (void)drawInRect:(NSRect)dstSpacePortionRect
          fromRect:(NSRect)srcSpacePortionRect
         operation:(NSCompositingOperation)op
          fraction:(CGFloat)requestedAlpha
    respectFlipped:(BOOL)respectContextIsFlipped
             hints:(NSDictionary *)hints {
    NSGraphicsContext* nsGraphicsContext = [NSGraphicsContext currentContext] ;
    CGContextRef aContext = [nsGraphicsContext graphicsPort] ;
    CGAffineTransform ctm = CGContextGetCTM(aContext) ;
    NSLog(@"The ctm: %f %f %f %f %f %f", ctm.a , ctm.b , ctm.c , ctm.d , ctm.tx 
, ctm.ty) ;
    [super drawInRect:dstSpacePortionRect
             fromRect:srcSpacePortionRect
            operation:op
             fraction:requestedAlpha
       respectFlipped:respectContextIsFlipped
                hints:hints] ;
}

@end

Unfortunately, the matrix elements are NSLogged as:
  1.000000 0.000000 -0.000000 1.000000 0.000000 22.000000

which is obviously not what I'm looking for, since the the x-coordinate of my 
status item is about 850.

The two 'Rect' parameters of that method give similar useless local coordinates.

Is there any way to get the global/screen coordinates of a menu, an 
NSStatusItem in particular?

Thanks,

Jerry

On 2011 Oct 09, at 14:41, Jerry Krinock wrote:

> OK, the CGEventCreateMouseEvent() kludge I described in my previous message 
> seems to work, except for one detail.  How do I find the location of, in 
> particular, a Status Menu item, in CG "global" coordinates?  It looks like 
> that's the hardest part!
> 
> Jerry
> 
> On 2011 Oct 09, at 14:16, Jerry Krinock wrote:
> 
>> Update: I'm "borrowing" the mouse using CGEventCreateMouseEvent().  It seems 
>> like it might work, but sure seems like a kludge, and many lines of code to 
>> do something very simple.
>> 
>> Any better ideas would be appreciated.
>> 
>> On 2011 Oct 09, at 12:31, Jerry Krinock wrote:
>> 
>>> Is there any code which can *click* a menu, to give it keyboard focus, so 
>>> that the user may then select an item in the menu using arrow keys?

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to