NSBrowser header themeing

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@30189 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Eric Wasylishen 2010-04-19 03:14:36 +00:00
parent 4650d6493d
commit 0d365b7d10
5 changed files with 73 additions and 3 deletions

View file

@ -1,3 +1,11 @@
2010-04-18 Eric Wasylishen <ewasylishen@gmail.com>
* Source/NSBrowser.m:
* Source/GSTheme.m:
* Source/GSThemeDrawing.m:
* Headers/Additions/GNUstepGUI/GSTheme.h: Factor out browser
header drawing to GSTheme.
2010-04-18 Eric Wasylishen <ewasylishen@gmail.com>
* Source/NSScrollView.m:

View file

@ -263,6 +263,11 @@ APPKIT_EXPORT NSString *GSScrollerVerticalSlot;
APPKIT_EXPORT NSString *GSTableHeader;
APPKIT_EXPORT NSString *GSTableCorner;
/*
* Browser part names.
*/
APPKIT_EXPORT NSString *GSBrowserHeader;
/*
* Menu part names.
*/
@ -921,6 +926,14 @@ APPKIT_EXPORT NSString *GSThemeWillDeactivateNotification;
forStyleMask: (unsigned int)styleMask
state: (int)inputState
andTitle: (NSString*)title;
- (void) drawBrowserHeaderCell: (NSCell*)cell
withFrame: (NSRect)rect
inView: (NSView*)view;
- (NSRect) browserHeaderDrawingRectForCell: (NSCell*)cell
withFrame: (NSRect)rect;
@end
/**

View file

@ -78,6 +78,9 @@ NSString *GSScrollerVerticalSlot = @"GSScrollerVerticalSlot";
NSString *GSTableHeader = @"GSTableHeader";
NSString *GSTableCorner = @"GSTableCorner";
// Browser part names
NSString *GSBrowserHeader = @"GSBrowserHeader";
// Menu part names
NSString *GSMenuHorizontalBackground = @"GSMenuHorizontalBackground";
NSString *GSMenuVerticalBackground = @"GSMenuVerticalBackground";

View file

@ -1435,4 +1435,43 @@ static NSDictionary *titleTextAttributes[3] = {nil, nil, nil};
}
}
- (void) drawBrowserHeaderCell: (NSCell*)cell
withFrame: (NSRect)rect
inView: (NSView*)view;
{
GSDrawTiles *tiles;
tiles = [self tilesNamed: GSBrowserHeader state: GSThemeNormalState];
if (tiles == nil)
{
[self drawGrayBezel: rect withClip: NSZeroRect];
[cell _drawBackgroundWithFrame: rect inView: view];
}
else
{
[self fillRect: rect
withTiles: tiles
background: [NSColor clearColor]];
}
}
- (NSRect) browserHeaderDrawingRectForCell: (NSCell*)cell
withFrame: (NSRect)rect
{
GSDrawTiles *tiles;
tiles = [self tilesNamed: GSBrowserHeader state: GSThemeNormalState];
if (tiles == nil)
{
return NSInsetRect(rect, 2, 2);
}
else
{
// FIXME: We assume the button's top and right padding are the same as
// its bottom and left.
return NSInsetRect(rect,
tiles->contentRect.origin.x,
tiles->contentRect.origin.y);
}
}
@end

View file

@ -206,14 +206,21 @@ static NSTextFieldCell *titleCell;
- (NSRect) drawingRectForBounds: (NSRect)theRect
{
// This adjustment must match the drawn border
return NSInsetRect(theRect, 2, 2);
return [[GSTheme theme] browserHeaderDrawingRectForCell: self
withFrame: theRect];
}
- (void) _drawBorderAndBackgroundWithFrame: (NSRect)cellFrame
inView: (NSView*)controlView
{
[[GSTheme theme] drawGrayBezel: cellFrame withClip: NSZeroRect];
[self _drawBackgroundWithFrame: cellFrame inView: controlView];
[[GSTheme theme] drawBrowserHeaderCell: self
withFrame: cellFrame
inView: controlView];
}
- (BOOL) isOpaque
{
return NO;
}
@end