[-cellSize] implemented

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@4864 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Richard Frith-MacDonald 1999-09-10 05:18:32 +00:00
parent 87ad4f2d21
commit fd0242bd0d
2 changed files with 110 additions and 0 deletions

View file

@ -1,3 +1,7 @@
iThu Sep 9 1999 Nicola Pero <n.pero@mi.flashnet.it>
* Source/NSButtonCell.m: implemented missing method ([-cellSize]).
1999-09-09 Gerrit van Dyk <gerritvd@decillion.net>
* Headers/NSComboBox.h: Added NSComboBox

View file

@ -548,6 +548,112 @@
}
}
- (NSSize) cellSize
{
NSSize s;
NSSize borderSize;
BOOL showAlternate = NO;
unsigned mask;
NSImage *imageToDisplay;
NSString *titleToDisplay;
NSSize imageSize;
NSSize titleSize;
//
// The following code must be kept in sync with -drawInteriorWithFrame
//
if ([self isHighlighted])
mask = [self highlightsBy];
else
mask = [self showsStateBy];
if (mask & NSContentsCellMask)
showAlternate = [self state];
if (showAlternate || [self isHighlighted])
{
imageToDisplay = [self alternateImage];
if (!imageToDisplay)
imageToDisplay = [self image];
titleToDisplay = [self alternateTitle];
if (titleToDisplay == nil || [titleToDisplay isEqual: @""])
titleToDisplay = [self title];
}
else
{
imageToDisplay = [self image];
titleToDisplay = [self title];
}
if (imageToDisplay)
imageSize = [imageToDisplay size];
else
imageSize = NSZeroSize;
if (titleToDisplay)
titleSize = NSMakeSize ([cell_font widthOfString: titleToDisplay],
[cell_font pointSize]);
else
titleSize = NSZeroSize;
switch ([self imagePosition])
{
case NSNoImage:
s = titleSize;
break;
case NSImageOnly:
s = imageSize;
break;
case NSImageLeft:
case NSImageRight:
s.width = imageSize.width + titleSize.width + xDist;
if (imageSize.height > titleSize.height)
s.height = imageSize.height;
else
s.height = titleSize.height;
break;
case NSImageBelow:
case NSImageAbove:
if (imageSize.width > titleSize.width)
s.height = imageSize.width;
else
s.width = titleSize.width;
s.height = imageSize.height + titleSize.height; // + yDist ??
break;
case NSImageOverlaps:
if (imageSize.width > titleSize.width)
s.width = imageSize.width;
else
s.width = titleSize.width;
if (imageSize.height > titleSize.height)
s.height = imageSize.height;
else
s.height = titleSize.height;
break;
}
// Add spacing between text/image and border
s.width += 2 * xDist;
s.height += 2 * yDist;
// Get border size
if ([self isBordered])
borderSize = [NSCell sizeForBorderType: NSBezelBorder];
else
borderSize = [NSCell sizeForBorderType: NSNoBorder];
// Add border size
s.width += 2 * borderSize.width;
s.height += 2 * borderSize.height;
return s;
}
- (id) copyWithZone: (NSZone*)zone
{