mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-23 12:00:52 +00:00
merge in some theme branch changes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@24017 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
ece0182c72
commit
47363b2182
3 changed files with 78 additions and 32 deletions
10
ChangeLog
10
ChangeLog
|
@ -1,3 +1,13 @@
|
|||
2006-11-02 Richard Frith-Macdonald <rfm@gnu.org>
|
||||
|
||||
* Source/GSTheme.m:
|
||||
* Source/GSInfoPanel.m:
|
||||
Merge in changes from theme branch...
|
||||
Support tiling when drawing button cells.
|
||||
Make theme panel link visible, as someone suggested that having
|
||||
it totally hidden was not so good. Perhaps make it more explicit
|
||||
in future?
|
||||
|
||||
2006-11-01 Matt Rice <ratmice@yahoo.com>
|
||||
|
||||
* Source/NSTableView.m:
|
||||
|
|
|
@ -170,6 +170,7 @@ new_label (NSString *value)
|
|||
NSString *url = nil;
|
||||
NSString *copyright = nil;
|
||||
NSString *copyrightDescription = nil;
|
||||
NSString *theme = nil;
|
||||
|
||||
/* GUI Objects used to show the Info */
|
||||
NSButton *iconButton;
|
||||
|
@ -181,6 +182,7 @@ new_label (NSString *value)
|
|||
NSTextField *urlLabel = nil;
|
||||
NSTextField *copyrightLabel;
|
||||
NSTextField *copyrightDescriptionLabel = nil;
|
||||
NSTextField *themeLabel = nil;
|
||||
NSFont *smallFont;
|
||||
|
||||
/* Minimum size we use for the panel */
|
||||
|
@ -400,6 +402,12 @@ new_label (NSString *value)
|
|||
[copyrightDescriptionLabel sizeToFit];
|
||||
}
|
||||
|
||||
theme = [NSString stringWithFormat: @"%@: %@",
|
||||
_(@"Current theme"), [[GSTheme theme] name]];
|
||||
themeLabel = new_label (theme);
|
||||
[themeLabel setFont: smallFont];
|
||||
[themeLabel sizeToFit];
|
||||
|
||||
/*
|
||||
* Compute width and height of the panel
|
||||
*/
|
||||
|
@ -452,6 +460,10 @@ new_label (NSString *value)
|
|||
width = tmp_A;
|
||||
}
|
||||
|
||||
tmp_A = [themeLabel frame].size.width;
|
||||
if (tmp_A > width)
|
||||
width = tmp_A;
|
||||
|
||||
/* height */
|
||||
/* Warning: we implicitly assume icon height is approx of the
|
||||
standard height of 48. The code tries to be nice so that 50 or
|
||||
|
@ -481,6 +493,9 @@ new_label (NSString *value)
|
|||
tmp_A += [copyrightDescriptionLabel frame].size.height;
|
||||
}
|
||||
|
||||
tmp_A += 5;
|
||||
tmp_A += [themeLabel frame].size.height;
|
||||
|
||||
if (tmp_A > height)
|
||||
height = tmp_A;
|
||||
|
||||
|
@ -592,18 +607,17 @@ new_label (NSString *value)
|
|||
[copyrightDescriptionLabel setFrame: f];
|
||||
}
|
||||
|
||||
f = [themeLabel frame];
|
||||
f.origin.x = (width - f.size.width) / 2;
|
||||
f.origin.y = tmp_b - 25 - f.size.height;
|
||||
tmp_b = f.origin.y;
|
||||
[cv addSubview: themeLabel];
|
||||
[themeLabel setFrame: f];
|
||||
[themeLabel setTarget: [GSTheme class]];
|
||||
[themeLabel setAction: @selector(orderFrontSharedThemePanel:)];
|
||||
|
||||
[self center];
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void) mouseDown: (NSEvent*)theEvent
|
||||
{
|
||||
/*
|
||||
* Mouse down on window background ... we could do different things in
|
||||
* different regions of the window, but for now we just use this to
|
||||
* activate the theme panel.
|
||||
*/
|
||||
[GSTheme orderFrontSharedThemePanel: self];
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -668,40 +668,62 @@ static NSNull *null = nil;
|
|||
|
||||
@implementation GSTheme (Drawing)
|
||||
|
||||
- (NSRect) drawButton: (NSRect) frame
|
||||
in: (NSButtonCell*) cell
|
||||
view: (NSView*) view
|
||||
style: (int) style
|
||||
state: (int) state
|
||||
- (NSRect) drawButton: (NSRect)frame
|
||||
in: (NSButtonCell*)cell
|
||||
view: (NSView*)view
|
||||
style: (int)style
|
||||
state: (int)state
|
||||
{
|
||||
/* computes the interior frame rect */
|
||||
|
||||
NSRect interiorFrame = [cell drawingRectForBounds: frame];
|
||||
|
||||
/* Draw the button background */
|
||||
GSDrawTiles *tiles = nil;
|
||||
NSColor *color = nil;
|
||||
NSRect interiorFrame;
|
||||
|
||||
if (state == 0) /* default state, unpressed */
|
||||
{
|
||||
[[NSColor controlBackgroundColor] set];
|
||||
NSRectFill(frame);
|
||||
[self drawButton: frame withClip: NSZeroRect];
|
||||
tiles = [self tilesNamed: @"NSButtonNormal" cache: YES];
|
||||
color = [NSColor controlBackgroundColor];
|
||||
}
|
||||
else if (state == 1) /* highlighted state */
|
||||
{
|
||||
[[NSColor selectedControlColor] set];
|
||||
NSRectFill(frame);
|
||||
[self drawGrayBezel: frame withClip: NSZeroRect];
|
||||
tiles = [self tilesNamed: @"NSButtonHighlighted" cache: YES];
|
||||
color = [NSColor selectedControlColor];
|
||||
}
|
||||
else if (state == 2) /* pushed state */
|
||||
{
|
||||
[[NSColor selectedControlColor] set];
|
||||
NSRectFill(frame);
|
||||
[self drawGrayBezel: frame withClip: NSZeroRect];
|
||||
interiorFrame
|
||||
= NSOffsetRect(interiorFrame, 1.0, [view isFlipped] ? 1.0 : -1.0);
|
||||
tiles = [self tilesNamed: @"NSButtonPushed" cache: YES];
|
||||
color = [NSColor selectedControlColor];
|
||||
}
|
||||
|
||||
/* returns the interior frame rect */
|
||||
if (tiles == nil)
|
||||
{
|
||||
interiorFrame = [cell drawingRectForBounds: frame];
|
||||
[color set];
|
||||
NSRectFill(frame);
|
||||
|
||||
if (state == 0) /* default state, unpressed */
|
||||
{
|
||||
[self drawButton: frame withClip: NSZeroRect];
|
||||
}
|
||||
else if (state == 1) /* highlighted state */
|
||||
{
|
||||
[self drawGrayBezel: frame withClip: NSZeroRect];
|
||||
}
|
||||
else if (state == 2) /* pushed state */
|
||||
{
|
||||
[self drawGrayBezel: frame withClip: NSZeroRect];
|
||||
interiorFrame
|
||||
= NSOffsetRect(interiorFrame, 1.0, [view isFlipped] ? 1.0 : -1.0);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Use tiles to draw button border with central part filled with color
|
||||
*/
|
||||
interiorFrame = [self fillRect: frame
|
||||
withTiles: tiles
|
||||
background: color
|
||||
fillStyle: GSThemeFillStyleNone];
|
||||
}
|
||||
|
||||
return interiorFrame;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue