diff --git a/ChangeLog b/ChangeLog index 879fe3807..1ad838446 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2010-01-29 Eric Wasylishen + + * Source/NSTableHeaderCell.m: + * Source/GSTheme.m: + * Source/NSTableHeaderView.m: + * Source/GSThemeDrawing.m: + * Headers/Additions/GNUstepGUI/GSTheme.h: Use theme tiles (if available) + to draw table headers. New tile names are GSTableHeader and + GSTableCorner. + 2010-01-29 Eric Wasylishen * Source/GSThemeDrawing.m (-cellForScrollerKnobSlot:): If there are diff --git a/Headers/Additions/GNUstepGUI/GSTheme.h b/Headers/Additions/GNUstepGUI/GSTheme.h index bd2ce6c72..6184c65ef 100644 --- a/Headers/Additions/GNUstepGUI/GSTheme.h +++ b/Headers/Additions/GNUstepGUI/GSTheme.h @@ -259,6 +259,11 @@ APPKIT_EXPORT NSString *GSScrollerUpArrow; APPKIT_EXPORT NSString *GSScrollerVerticalKnob; APPKIT_EXPORT NSString *GSScrollerVerticalSlot; +/* Names for table view parts */ +APPKIT_EXPORT NSString *GSTableHeader; +APPKIT_EXPORT NSString *GSTableCorner; + + /** * This defines how the values in a tile array should be used when * drawing a rectangle. Mostly this just effects the center, middle diff --git a/Source/GSTheme.m b/Source/GSTheme.m index d954d7aaa..2cf93711d 100644 --- a/Source/GSTheme.m +++ b/Source/GSTheme.m @@ -72,6 +72,12 @@ NSString *GSScrollerUpArrow = @"GSScrollerUpArrow"; NSString *GSScrollerVerticalKnob = @"GSScrollerVerticalKnob"; NSString *GSScrollerVerticalSlot = @"GSScrollerVerticalSlot"; +// Table view part names +NSString *GSTableHeader = @"GSTableHeader"; +NSString *GSTableCorner = @"GSTableCorner"; + + + NSString *GSThemeDidActivateNotification = @"GSThemeDidActivateNotification"; NSString *GSThemeDidDeactivateNotification diff --git a/Source/GSThemeDrawing.m b/Source/GSThemeDrawing.m index b7d6aa0e0..c870ce706 100644 --- a/Source/GSThemeDrawing.m +++ b/Source/GSThemeDrawing.m @@ -959,6 +959,7 @@ static NSImage *spinningImages[MaxCount]; { NSRect divide; NSRect rect; + GSDrawTiles *tiles = [self tilesNamed: GSTableCorner state: GSThemeNormalState]; if ([cornerView isFlipped]) { @@ -969,11 +970,20 @@ static NSImage *spinningImages[MaxCount]; NSDivideRect(aRect, ÷, &rect, 1.0, NSMinYEdge); } - [[NSColor blackColor] set]; - NSRectFill(divide); - rect = [self drawDarkButton: rect withClip: aRect]; - [[NSColor controlShadowColor] set]; - NSRectFill(rect); + if (tiles == nil) + { + [[NSColor blackColor] set]; + NSRectFill(divide); + rect = [self drawDarkButton: rect withClip: aRect]; + [[NSColor controlShadowColor] set]; + NSRectFill(rect); + } + else + { + [self fillRect: aRect + withTiles: tiles + background: [NSColor clearColor]]; + } } - (void) drawTableHeaderCell: (NSTableHeaderCell *)cell @@ -981,13 +991,29 @@ static NSImage *spinningImages[MaxCount]; inView: (NSView *)controlView state: (GSThemeControlState)state { - if (state == GSThemeHighlightedState) + GSDrawTiles *tiles = [self tilesNamed: GSTableHeader state: state]; + + if (tiles == nil) { - [self drawButton: cellFrame withClip: cellFrame]; + NSRect rect; + if (state == GSThemeHighlightedState) + { + rect = [self drawButton: cellFrame withClip: cellFrame]; + [[NSColor controlColor] set]; + NSRectFill(rect); + } + else + { + rect = [self drawDarkButton: cellFrame withClip: cellFrame]; + [[NSColor controlShadowColor] set]; + NSRectFill(rect); + } } else { - [self drawDarkButton: cellFrame withClip: cellFrame]; + [self fillRect: cellFrame + withTiles: tiles + background: [NSColor clearColor]]; } } diff --git a/Source/NSTableHeaderCell.m b/Source/NSTableHeaderCell.m index 915cb0ab5..b1eec1fa1 100644 --- a/Source/NSTableHeaderCell.m +++ b/Source/NSTableHeaderCell.m @@ -78,9 +78,6 @@ withFrame: cellFrame inView: controlView state: state]; - - // Draw the label - [self _drawBackgroundWithFrame: cellFrame inView: controlView]; } - (void) drawSortIndicatorWithFrame: (NSRect)cellFrame diff --git a/Source/NSTableHeaderView.m b/Source/NSTableHeaderView.m index f460d8b3c..4723f02b9 100644 --- a/Source/NSTableHeaderView.m +++ b/Source/NSTableHeaderView.m @@ -254,21 +254,6 @@ inView: self]; drawingRect.origin.x += width; } - - { - NSRectEdge up_sides[] = {NSMinYEdge, NSMaxXEdge}; - NSRectEdge dn_sides[] = {NSMaxYEdge, NSMaxXEdge}; - float grays[] = {NSBlack, NSBlack}; - - if (![self isFlipped]) - { - NSDrawTiledRects(_bounds, aRect, up_sides, grays, 2); - } - else - { - NSDrawTiledRects(_bounds, aRect, dn_sides, grays, 2); - } - } } /**