• 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: setToolTip: not working
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: setToolTip: not working


  • Subject: Re: setToolTip: not working
  • From: Ben Haller <email@hidden>
  • Date: Fri, 20 Nov 2009 12:12:15 -0500

On 20-Nov-09, at 6:57 AM, Andy Lee wrote:

On Nov 19, 2009, at 1:04 PM, Ben Haller wrote:
This led me to suspect the custom NSView subclass that I am using as a content view, and indeed, if I use that custom subclass as the content view in Andy's code, it breaks the tooltip there too.

Total shot in the dark: what if you don't change the window's content view but rather make your custom subclass a subview that fills the content view? There may be some behind-the-scenes logic specific to content views that is messing you up.

Yeah, that was what I figured too, that there is something special about the handling of the content view that means it can't be flipped, but a view inside it could be. But it turns out that is not the case; the following code exhibits the same bug:


- (void)awakeFromNib
{
NSWindow *testWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(100, 100, 500, 500)
styleMask:(NSTitledWindowMask | NSResizableWindowMask)
backing:NSBackingStoreBuffered
defer:YES];

NSRect contentFrame = [[testWindow contentView] frame];
AKDocumentContentView *newContentView = [[AKDocumentContentView alloc] initWithFrame:contentFrame];
[newContentView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];
[[testWindow contentView] addSubview:newContentView];

NSButton *testButton = [[NSButton alloc] initWithFrame:NSMakeRect(100, 50, 100, 20)];
[testButton setTitle:@"Hover Over Me"];
[testButton sizeToFit];
[testButton setToolTip:@"This is an NSButton"];
[newContentView addSubview:testButton];


NSView *testView = [[NSView alloc] initWithFrame:NSMakeRect(100, 100, 100, 20)];
[testView setToolTip:@"This is a test view"];
[newContentView addSubview:testView];

[testWindow setContentSize:NSMakeSize(500, 600)];
[testWindow makeKeyAndOrderFront:self];
}


Where the AKDocumentContentView is, as before, a subclass of NSView that simply returns YES from -isFlipped and is otherwise empty. So it looks like it is a general bug that bites you when:

1. you add a new view, with a tooltip already set, to a superview
2. the superview returns YES from -isFlipped
3. the superview then gets resized as a consequence of a - setContentSize: call (but not a user resize, for some reason)


If any of these conditions are not met, then the tooltip will work fine. I've gone with the workaround of setting all my tooltips after I have set the final size on my window, and that is working fine for me for the time being, although it would be nice to have a workaround that would let me change the size of the window later on without all the tooltips suddenly breaking.

Thanks to everybody for their help in tracking this down. I think I'm having to re-learn the deductive mindset I used to have in tracking down problems like this; many aspects of coding have come back to me quite quickly after my six-year break from it, but I'm a bit rusty at this kind of analysis. :->

Ben Haller
Stick Software

_______________________________________________

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


References: 
 >Re: setToolTip: not working (From: Gregory Weston <email@hidden>)
 >Re: setToolTip: not working (From: Andy Lee <email@hidden>)
 >Re: setToolTip: not working (From: Ben Haller <email@hidden>)
 >Re: setToolTip: not working (From: Andy Lee <email@hidden>)

  • Prev by Date: Re: tableView:setObjectValue:forTableColumn:row: not called when button pressed
  • Next by Date: Re: tiffs on pasteboard
  • Previous by thread: Re: setToolTip: not working
  • Next by thread: Creation date of Feb 14th 1946 - Why?
  • Index(es):
    • Date
    • Thread