Fix for toolbar item's target set to null.

[#115 state:resolved]

Reviewed by me.
This commit is contained in:
Francisco Ryan Tolmasky I
2008-10-27 01:51:08 -07:00
parent f7dd436b81
commit 745df353c4
2 changed files with 84 additions and 25 deletions
+2 -1
View File
@@ -430,6 +430,7 @@ var _CPToolbarItemInfoMake = function(anIndex, aView, aLabel, aMinWidth)
// Determine all the items that have flexible width.
// Also determine the height of the toolbar.
// NOTE: height is height without top margin, and bottom margin/label.
var index = _visibleItems.length,
height = 0.0;
@@ -511,7 +512,7 @@ var _CPToolbarItemInfoMake = function(anIndex, aView, aLabel, aMinWidth)
itemWidth = MAX([self minWidthForItem:item], viewWidth),
viewHeight = MAX([item minSize].height, MIN([item maxSize].height, height));
viewHeight = CGRectGetHeight(viewFrame);
// itemWidth != viewWidth. itemWidth is MAX(size of view, size of label). If the label is larger,
// *center* the view, don't resize it.
+82 -24
View File
@@ -77,7 +77,9 @@ var _CPToolbarSeparatorItemView = nil;
BOOL _isEnabled;
CPImage _image;
CPImage _alternateImage;
CPView _view;
CGSize _minSize;
CGSize _maxSize;
@@ -98,6 +100,9 @@ var _CPToolbarSeparatorItemView = nil;
{
_itemIdentifier = anItemIdentifier;
_tag = 0;
_isEnabled = YES;
_minSize = CGSizeMakeZero();
_maxSize = CGSizeMakeZero();
@@ -165,6 +170,9 @@ var _CPToolbarSeparatorItemView = nil;
*/
- (CPString)toolTip
{
if ([_view respondsToSelector:@selector(toolTip)])
return [_view toolTip];
return _toolTip;
}
@@ -174,6 +182,9 @@ var _CPToolbarSeparatorItemView = nil;
*/
- (void)setToolTip:(CPString)aToolTip
{
if ([_view respondsToSelector:@selector(setToolTip:)])
[view setToolTip:aToolTip];
_toolTip = aToolTip;
}
@@ -182,6 +193,9 @@ var _CPToolbarSeparatorItemView = nil;
*/
- (int)tag
{
if ([_view respondsToSelector:@selector(tag)])
return [_view tag];
return _tag;
}
@@ -191,6 +205,9 @@ var _CPToolbarSeparatorItemView = nil;
*/
- (void)setTag:(int)aTag
{
if ([_view respondsToSelector:@selector(setTag:)])
[_view setTag:aTag];
_tag = aTag;
}
@@ -199,6 +216,9 @@ var _CPToolbarSeparatorItemView = nil;
*/
- (id)target
{
if (_view)
return [_view respondsToSelector:@selector(target)] ? [_view target] : nil;
return _target;
}
@@ -209,7 +229,11 @@ var _CPToolbarSeparatorItemView = nil;
*/
- (void)setTarget:(id)aTarget
{
_target = aTarget;
if (!_view)
_target = aTarget;
else if ([_view respondsToSelector:@selector(setTarget:)])
[_view setTarget:aTarget];
}
/*!
@@ -217,6 +241,9 @@ var _CPToolbarSeparatorItemView = nil;
*/
- (SEL)action
{
if (_view)
return [_view respondsToSelector:@selector(action)] ? [_view action] : nil;
return _action;
}
@@ -226,7 +253,11 @@ var _CPToolbarSeparatorItemView = nil;
*/
- (void)setAction:(SEL)anAction
{
_action = anAction;
if (!_view)
_action = anAction;
else if ([_view respondsToSelector:@selector(setAction:)])
[_view setAction:anAction];
}
/*!
@@ -234,6 +265,9 @@ var _CPToolbarSeparatorItemView = nil;
*/
- (BOOL)isEnabled
{
if ([_view respondsToSelector:@selector(isEnabled)])
return [_view isEnabled];
return _isEnabled;
}
@@ -241,9 +275,12 @@ var _CPToolbarSeparatorItemView = nil;
Sets whether the item is enabled.
@param aFlag <code>YES</code> enables the item
*/
- (void)setEnabled:(BOOL)aFlag
- (void)setEnabled:(BOOL)shouldBeEnabled
{
_isEnabled = aFlag;
if ([_view respondsToSelector:@selector(setEnabled:)])
[_view setEnabled:shouldBeEnabled];
_isEnabled = shouldBeEnabled;
}
/*!
@@ -251,6 +288,9 @@ var _CPToolbarSeparatorItemView = nil;
*/
- (CPImage)image
{
if ([_view respondsToSelector:@selector(image)])
return [_view image];
return _image;
}
@@ -260,22 +300,24 @@ var _CPToolbarSeparatorItemView = nil;
*/
- (void)setImage:(CPImage)anImage
{
if ([_view respondsToSelector:@selector(setImage:)])
[_view setImage:anImage];
_image = anImage;
// FIXME: We can't keep assuming this.
[_view setImage:anImage];
if (!_image)
return;
var imageSize = [_image size];
if (_minSize.width == 0 && _minSize.height == 0 &&
_maxSize.width == 0 && _maxSize.height == 0 &&
(imageSize.width > 0 || imageSize.height > 0))
_maxSize.width == 0 && _maxSize.height == 0)
{
[self setMinSize:imageSize];
[self setMaxSize:imageSize];
var imageSize = [_image size];
if (imageSize.width > 0 || imageSize.height > 0)
{
[self setMinSize:imageSize];
[self setMaxSize:imageSize];
}
}
}
@@ -285,10 +327,10 @@ var _CPToolbarSeparatorItemView = nil;
*/
- (void)setAlternateImage:(CPImage)anImage
{
_alternateImage = anImage;
if ([_view respondsToSelector:@selector(setAlternateImage:)])
[_view setAlternateImage:anImage];
// FIXME: We can't keep assuming this.
[_view setAlternateImage:anImage];
_alternateImage = anImage;
}
/*!
@@ -296,6 +338,9 @@ var _CPToolbarSeparatorItemView = nil;
*/
- (CPImage)alternateImage
{
if ([_view respondsToSelector:@selector(alternateIamge)])
return [_view alternateImage];
return _alternateImage;
}
@@ -313,7 +358,20 @@ var _CPToolbarSeparatorItemView = nil;
*/
- (void)setView:(CPView)aView
{
if (_view == aView)
return;
_view = aView;
if (_view)
{
// Tags get forwarded.
if (_tag !== 0 && [_view respondsToSelector:@selector(setTag:)])
[_view setTag:_tag];
_target = nil;
_action = nil;
}
}
/*!
@@ -394,21 +452,21 @@ CPToolbarItemVisibilityPriorityUser
{
var copy = [[[self class] alloc] initWithItemIdentifier:_itemIdentifier];
if (_view)
[copy setView:[CPKeyedUnarchiver unarchiveObjectWithData:[CPKeyedArchiver archivedDataWithRootObject:_view]]];
[copy setLabel:_label];
[copy setPaletteLabel:_paletteLabel];
[copy setToolTip:_toolTip];
[copy setToolTip:[self toolTip]];
[copy setTag:_tag];
[copy setTarget:_target];
[copy setAction:_action];
[copy setTag:[self tag]];
[copy setTarget:[self target]];
[copy setAction:[self action]];
[copy setEnabled:_isEnabled];
[copy setEnabled:[self isEnabled]];
[copy setImage:_image];
[copy setAlternateImage:_alternateImage];
if (_view)
[copy setView:[CPKeyedUnarchiver unarchiveObjectWithData:[CPKeyedArchiver archivedDataWithRootObject:_view]]];
[copy setMinSize:_minSize];
[copy setMaxSize:_maxSize];