--- a/widget/cocoa/nsCocoaWindow.mm
+++ b/widget/cocoa/nsCocoaWindow.mm
@@ -3525,29 +3525,17 @@ static const NSString* kStateCollectionB
return retval;
}
@end
// This class allows us to exercise control over the window's title bar. This
// allows for a "unified toolbar" look without having to extend the content
-// area into the title bar. It works like this:
-// 1) We set the window's style to textured.
-// 2) Because of this, the background color applies to the entire window, including
-// the titlebar area. For normal textured windows, the default pattern is a
-// "brushed metal" image on Tiger and a unified gradient on Leopard.
-// 3) We set the background color to a custom NSColor subclass that knows how tall the window is.
-// When -set is called on it, it sets a pattern (with a draw callback) as the fill. In that callback,
-// it paints the the titlebar and background colors in the correct areas of the context it's given,
-// which will fill the entire window (CG will tile it horizontally for us).
-// 4) Whenever the window's main state changes and when [window display] is called,
-// Cocoa redraws the titlebar using the patternDraw callback function.
-//
-// This class also provides us with a pill button to show/hide the toolbar up to 10.6.
+// area into the title bar.
//
// Drawing the unified gradient in the titlebar and the toolbar works like this:
// 1) In the style sheet we set the toolbar's -moz-appearance to toolbar.
// 2) When the toolbar is visible and we paint the application chrome
// window, the array that Gecko passes nsChildView::UpdateThemeGeometries
// will contain an entry for the widget type NS_THEME_TOOLBAR.
// 3) nsChildView::UpdateThemeGeometries finds the toolbar frame's ToolbarWindow
// and passes the toolbar frame's height to setUnifiedToolbarHeight.
@@ -3570,21 +3558,16 @@ static const NSString* kStateCollectionB
@implementation ToolbarWindow
- (id)initWithContentRect:(NSRect)aContentRect styleMask:(NSUInteger)aStyle backing:(NSBackingStoreType)aBufferingType defer:(BOOL)aFlag
{
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
aStyle = aStyle | NSTexturedBackgroundWindowMask;
if ((self = [super initWithContentRect:aContentRect styleMask:aStyle backing:aBufferingType defer:aFlag])) {
- mColor = [[TitlebarAndBackgroundColor alloc] initWithWindow:self];
- // Bypass our guard method below.
- [super setBackgroundColor:mColor];
- mBackgroundColor = [[NSColor whiteColor] retain];
-
mUnifiedToolbarHeight = 22.0f;
mWindowButtonsRect = NSZeroRect;
mFullScreenButtonRect = NSZeroRect;
// setBottomCornerRounded: is a private API call, so we check to make sure
// we respond to it just in case.
if ([self respondsToSelector:@selector(setBottomCornerRounded:)])
[self setBottomCornerRounded:YES];
@@ -3592,46 +3575,22 @@ static const NSString* kStateCollectionB
[self setAutorecalculatesContentBorderThickness:NO forEdge:NSMaxYEdge];
[self setContentBorderThickness:0.0f forEdge:NSMaxYEdge];
}
return self;
NS_OBJC_END_TRY_ABORT_BLOCK_NIL;
}
-- (void)dealloc
-{
- NS_OBJC_BEGIN_TRY_ABORT_BLOCK;
-
- [super setBackgroundColor:[NSColor whiteColor]];
- [mColor release];
- [mBackgroundColor release];
- [super dealloc];
-
- NS_OBJC_END_TRY_ABORT_BLOCK;
-}
-
- (void)setTitlebarColor:(NSColor*)aColor forActiveWindow:(BOOL)aActive
{
[super setTitlebarColor:aColor forActiveWindow:aActive];
[self setTitlebarNeedsDisplayInRect:[self titlebarRect]];
}
-- (void)setBackgroundColor:(NSColor*)aColor
-{
- [aColor retain];
- [mBackgroundColor release];
- mBackgroundColor = aColor;
-}
-
-- (NSColor*)windowBackgroundColor
-{
- return mBackgroundColor;
-}
-
- (void)setTitlebarNeedsDisplayInRect:(NSRect)aRect
{
[self setTitlebarNeedsDisplayInRect:aRect sync:NO];
}
- (void)setTitlebarNeedsDisplayInRect:(NSRect)aRect sync:(BOOL)aSync
{
NSRect titlebarRect = [self titlebarRect];
@@ -3850,97 +3809,16 @@ static const NSString* kStateCollectionB
break;
}
[super sendEvent:anEvent];
}
@end
-// Custom NSColor subclass where most of the work takes place for drawing in
-// the titlebar area. Not used in drawsContentsIntoWindowFrame mode.
-@implementation TitlebarAndBackgroundColor
-
-- (id)initWithWindow:(ToolbarWindow*)aWindow
-{
- if ((self = [super init])) {
- mWindow = aWindow; // weak ref to avoid a cycle
- }
- return self;
-}
-
-static void
-DrawNativeTitlebar(CGContextRef aContext, CGRect aTitlebarRect,
- CGFloat aUnifiedToolbarHeight, BOOL aIsMain)
-{
- nsNativeThemeCocoa::DrawNativeTitlebar(aContext, aTitlebarRect, aUnifiedToolbarHeight, aIsMain, NO);
-
- // The call to CUIDraw doesn't draw the top pixel strip at some window widths.
- // We don't want to have a flickering transparent line, so we overdraw it.
- CGContextSetRGBFillColor(aContext, 0.95, 0.95, 0.95, 1);
- CGContextFillRect(aContext, CGRectMake(0, CGRectGetMaxY(aTitlebarRect) - 1,
- aTitlebarRect.size.width, 1));
-}
-
-// Pattern draw callback for standard titlebar gradients and solid titlebar colors
-static void
-TitlebarDrawCallback(void* aInfo, CGContextRef aContext)
-{
- ToolbarWindow *window = (ToolbarWindow*)aInfo;
- if (![window drawsContentsIntoWindowFrame]) {
- NSRect titlebarRect = [window titlebarRect];
- BOOL isMain = [window isMainWindow];
- NSColor *titlebarColor = [window titlebarColorForActiveWindow:isMain];
- if (!titlebarColor) {
- // If the titlebar color is nil, draw the default titlebar shading.
- DrawNativeTitlebar(aContext, NSRectToCGRect(titlebarRect),
- [window unifiedToolbarHeight], isMain);
- } else {
- // If the titlebar color is not nil, just set and draw it normally.
- [NSGraphicsContext saveGraphicsState];
- [NSGraphicsContext setCurrentContext:[NSGraphicsContext graphicsContextWithGraphicsPort:aContext flipped:NO]];
- [titlebarColor set];
- NSRectFill(titlebarRect);
- [NSGraphicsContext restoreGraphicsState];
- }
- }
-}
-
-- (void)setFill
-{
- float patternWidth = [mWindow frame].size.width;
-
- CGPatternCallbacks callbacks = {0, &TitlebarDrawCallback, NULL};
- CGPatternRef pattern = CGPatternCreate(mWindow, CGRectMake(0.0f, 0.0f, patternWidth, [mWindow frame].size.height),
- CGAffineTransformIdentity, patternWidth, [mWindow frame].size.height,
- kCGPatternTilingConstantSpacing, true, &callbacks);
-
- // Set the pattern as the fill, which is what we were asked to do. All our
- // drawing will take place in the patternDraw callback.
- CGColorSpaceRef patternSpace = CGColorSpaceCreatePattern(NULL);
- CGContextRef context = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
- CGContextSetFillColorSpace(context, patternSpace);
- CGColorSpaceRelease(patternSpace);
- CGFloat component = 1.0f;
- CGContextSetFillPattern(context, pattern, &component);
- CGPatternRelease(pattern);
-}
-
-- (void)set
-{
- [self setFill];
-}
-
-- (NSString*)colorSpaceName
-{
- return NSDeviceRGBColorSpace;
-}
-
-@end
-
@implementation PopupWindow
- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)styleMask
backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation
{
NS_OBJC_BEGIN_TRY_ABORT_BLOCK_NIL;
mIsContextMenu = false;