I didn't pull my code from Chromium, I just noticed in my googling that they 
used the undocumented method that is required to get the mouse over effects to 
work.

I ended up sticking with the standard Cocoa buttons that NSWindow provides for 
my custom window as it requires the least amount of code to use. The main 
things I had to do are:

- Redraw the buttons when the window's key/main state changes
- Track the mouse to redraw the buttons when the mouse enters/exits the group 
of buttons
- Override in the button's superview _mouseInGroup: to return YES when the 
mouse is over any of the buttons
- After the window is minimized, make sure the buttons redraw again with the 
mouse not being over the buttons

I can post a sample project if someone wants, but I think that should cover it 
for anyone wanting to do this themselves.

Kevin


On Jan 20, 2010, at 8:56 PM, Jens Alfke wrote:

> 
> On Jan 20, 2010, at 9:43 AM, Kevin Wojniak wrote:
> 
>> NSWindow's standardWindowButton:forStyleMask: method works great for 
>> creating these buttons and adding to my custom (frame) view. However, the 
>> mouse over effect does not work without using undocumented methods. Mainly, 
>> overriding _mouseInGroup: in the button's superview (frame view) and 
>> returning YES when the mouse is over the buttons. This works, and I notice 
>> Google Chrome uses the same method, but I really dislike using undocumented 
>> APIs like this, especially for UI work. 
> 
> Funny you should point this out. I just found out the hard way that the code 
> currently used in Chromium has some issues — it crashes on 'textured' windows 
> for some reason. (Not currently a problem as Chromium has no textured 
> windows, but I tried adding one the other day, and blammo.) So I wouldn't 
> recommend anyone copy-and-paste it into their own project. Unfortunately it 
> was the best solution the Chromium developers could come up with at the time 
> … if anyone knows a better approach, we'd love to know.
> 
> (In Chromium's case, the window does use the standard frame, but moves the 
> buttons down 3 pixels to better center them against the tabs.)
> 
> —Jens

_______________________________________________

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