On Oct 31, 2012, at 8:50 AM, Nick <eveningn...@gmail.com> wrote:

> Hello
> 
> I am attempting to create an application with custom looking windows
> (similar to new iCalendar on mountain lion, or QuickTime player). I am
> targeting systems from Snow Leopard to Mountain Lion.
> 
> So far I've been customizing the window using the idea described at
> http://parmanoir.com/Custom_NSThemeFrame
> (basically I set the window to be Textured, and swizzle the drawRect
> method of the [[window contentView] superview] (which is an instance of
> NSThemeFrame), then draw some nice gradient in that new drawRect
> implementation, and a custom gradiented toolbar.
> The advantage of this method is that I do not have to bother with resizing
> (even the resizing mark in the bottom right corner is drawn automatically)
> and manually drawing titlebar buttons (albeit they have a gray shadow,
> despite i need a black one). Another advantage is that NSToolbar works
> normally with it, and looks nicely with this customly drawn theme frame.

Don't swizzle the theme frame drawRect: -- that won't always work (as you 
noticed) and isn't supported.

> 
> This works fine on Leopard and Snow Leopard, but not on Lion/Mountain Lion.
> Somehow, the application becomes very slow there (Instruments says that the
> application spends a whole bunch of time in some timer event somewhere deep
> in the AppKit, even though I do not use any timers in my app). Apart from
> the windows, on Lion/ML the sheets and the panels get this custom drawn
> background with a titlebar.
> 
> I am wondering if anyone created customized windows like this or reverse
> engineered this NSThemeFrame? Maybe there are any articles on the internet
> that I have missed (actually the link I gave in the beginning is the only
> one I have found on this topic). Somehow Apple's iCalendar works pretty
> fast on 10.7, while my app doesn't..

Calendar uses the public API of setBackgroundColor: on the window, and sets it 
to a pattern color. That is it.

corbin

> 
> If there's no way to fix this for 10.7/10.8, I guess I will have to draw my
> windows from scratch using NSBorderlessWindowMask, but I think it is very
> difficult to completely mimic the original window's behavior: borderless
> windows do not support NSToolBar (i.e., I have to create my own one from
> scratch), on different OS the windows look/behave differently (10.6 - large
> titlebar buttons, resizing only using right-bottom corner, while 10.7 and
> 10.8 - small titlebar buttons, resizing using any edge), etc..
> 
> 
> Thank you,
> Nicolas
> _______________________________________________
> 
> 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:
> https://lists.apple.com/mailman/options/cocoa-dev/corbind%40apple.com
> 
> This email sent to corb...@apple.com


_______________________________________________

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

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

Reply via email to