A number of improvements to theming and bug fixes.

Reviewed by me.
This commit is contained in:
Francisco Tolmasky committed 2009-02-13 01:48:44 -08:00
1 parent 689dd72363
commit 44d837c1eb
13 files changed
+140 -89

No files matched your search

+10 -21
View File
@@ -618,10 +618,10 @@ var _CPMenuBarVisible = NO,
if (!aFont)
aFont = [CPFont systemFontOfSize:12.0];
var theWindow = [aView window],
menuWindow = [_CPMenuWindow menuWindowWithMenu:aMenu font:aFont];
[menuWindow setDelegate:self];
[menuWindow setBackgroundStyle:isForMenuBar ? _CPMenuWindowMenuBarBackgroundStyle : _CPMenuWindowPopUpBackgroundStyle];
@@ -633,28 +633,17 @@ var _CPMenuBarVisible = NO,
+ (void)_menuWindowDidFinishTracking:(_CPMenuWindow)aMenuWindow highlightedItem:(CPMenuItem)aMenuItem
{
var menu = [aMenuWindow menu];
[_CPMenuWindow poolMenuWindow:aMenuWindow];
// var index = [self indexOfItem:aMenuItem];
// if (index == CPNotFound)
// return;
var target = nil,
action = [aMenuItem action];
if (!action)
{
// target = [self target];
// action = [self action];
}
// FIXME: If [selectedItem target] == nil do we use our own target?
else
target = [aMenuItem target];
if([aMenuItem isEnabled])
[CPApp sendAction:action to:target from:nil];
[CPApp sendAction:[aMenuItem action] to:[aMenuItem target] from:aMenuItem];
var delegate = [menu delegate];
if ([delegate respondsToSelector:@selector(menuDidClose:)])
[delegate menuDidClose:menu];
}
// Managing Display of State Column
+3 -2
View File
@@ -878,7 +878,8 @@ var _CPMenuItemSelectionColor = nil,
if (self != [_CPMenuItemView class])
return;
_CPMenuItemSelectionColor = [CPColor colorWithCalibratedRed:81.0 / 255.0 green:83.0 / 255.0 blue:109.0 / 255.0 alpha:1.0];
_CPMenuItemSelectionColor = [CPColor colorWithCalibratedRed:95.0 / 255.0 green:131.0 / 255.0 blue:185.0 / 255.0 alpha:1.0];
_CPMenuItemTextShadowColor = [CPColor colorWithCalibratedRed:26.0 / 255.0 green: 73.0 / 255.0 blue:109.0 / 255.0 alpha:1.0]
var bundle = [CPBundle bundleForClass:self];
@@ -1173,7 +1174,7 @@ var _CPMenuItemSelectionColor = nil,
- (CPColor)textColor
{
return [_menuItem isEnabled] ? (_textColor ? _textColor : [CPColor blackColor]) : [CPColor darkGrayColor];
return [_menuItem isEnabled] ? (_textColor ? _textColor : [CPColor colorWithCalibratedRed:70.0 / 255.0 green:69.0 / 255.0 blue:69.0 / 255.0 alpha:1.0]) : [CPColor darkGrayColor];
}
@end
+14 -14
View File
@@ -592,6 +592,15 @@ var CPPopUpButtonArrowsImage = nil;
if (items.length > 0)
[items[1] setHidden:NO];
}
var item = [_menu itemArray][index],
action = [item action];
if (!action || (action === @selector(_popUpItemAction:)))
{
[item setTarget:self];
[item setAction:@selector(_popUpItemAction:)];
}
}
/*!
@@ -685,21 +694,12 @@ var CPPopUpButtonArrowsImage = nil;
[self selectItemAtIndex:index];
var selectedItem = [self selectedItem],
target = nil,
action = [selectedItem action];
if (!action)
{
target = [self target];
action = [self action];
}
// FIXME: If [selectedItem target] == nil do we use our own target?
else
target = [selectedItem target];
[CPApp sendAction:[aMenuItem action] to:[aMenuItem target] from:aMenuItem];
}
[self sendAction:action to:target];
- (void)_popUpItemAction:(id)aSender
{
[self sendAction:[self action] to:[self target]];
}
- (CGRect)contentRectForBounds:(CGRect)bounds
+6
View File
@@ -22,6 +22,9 @@
@import <Foundation/CPString.j>
#include "CoreGraphics/CGGeometry.h"
#include "Platform/Platform.h"
var CPStringReferenceElement = nil,
CPStringDefaultFont = nil;
@@ -43,6 +46,7 @@ var CPStringReferenceElement = nil,
- (CGSize)sizeWithFont:(CPFont)aFont inWidth:(float)aWidth
{
#if PLATFORM(DOM)
if (!CPStringReferenceElement)
{
CPStringReferenceElement = document.createElement("span");
@@ -104,6 +108,8 @@ var CPStringReferenceElement = nil,
CPStringReferenceElement.textContent = self;
return CGSizeMake(CPStringReferenceElement.clientWidth, CPStringReferenceElement.clientHeight);
#endif
return _CGSizeMakeZero();
}
@end
+64 -7
View File
@@ -123,7 +123,7 @@ var BIT_COUNT = [ 0 /*0000*/, 1 /*0001*/, 1 /*0010*/, 2 /*0011*/, 1 /*0100*/,
_values[aState] = aValue;
}
else if (isSingularObject)
else if (_isSingularObject)
_values = aValue;
else
@@ -133,12 +133,22 @@ var BIT_COUNT = [ 0 /*0000*/, 1 /*0001*/, 1 /*0010*/, 2 /*0011*/, 1 /*0100*/,
- (id)valueForControlState:(CPControlState)aState
{
if (_isSingularObject)
return _values || [_valueFromTheme valueForControlState:aState] || _defaultValue;
{
var value = _values;
if (value === undefined || value === nil)
value = [_valueFromTheme valueForControlState:aState];
if (value === undefined || value === nil)
value = _defaultValue;
return value;
}
var value = _values[aState];
// If we don't have a value, and we have a non-normal state...
if (value === undefined && aState > 0)
if ((value === undefined || value === nil) && aState > 0)
{
// If this is a composite state, find the closest partial subset match.
if (!(aState & (aState - 1)))
@@ -165,11 +175,17 @@ var BIT_COUNT = [ 0 /*0000*/, 1 /*0001*/, 1 /*0010*/, 2 /*0011*/, 1 /*0100*/,
}
// Still don't have a value? OK, let's use the normal value.
if (value === undefined)
if (value === undefined || value === nil)
value = _values[CPControlStateNormal];
}
return value || [_valueFromTheme valueForControlState:aState] || _defaultValue;
if (value === undefined || value === nil)
value = [_valueFromTheme valueForControlState:aState];
if (value === undefined || value === nil)
value = _defaultValue;
return value;
}
- (id)initWithCoder:(CPCoder)aCoder
@@ -271,3 +287,44 @@ function CPThemedValueDecode(aCoder, aKey, aDefaultValue, anIdentifier, aTheme,
return value;
}
function CPThemedValueEncode2(aCoder, aThemedValue)
{
if (aThemedValue._isSingularObject)
{
var actualValue = aThemedValue._values;
if (aThemedValue._values)
[aCoder encodeObject:actualValue forKey:"$a" + [aThemedValue identifier]];
}
else
[aCoder encodeObject:aThemedValue forKey:"$a" + [aThemedValue identifier]];
}
function CPThemedValueDecode2(aCoder, anAttributeName, aDefaultValue, aTheme, aClass)
{
var key = "$a" + anAttributeName;
if (![aCoder containsValueForKey:key])
return CPThemedValueMake(aDefaultValue, anAttributeName, aTheme, aClass);
var value = [aCoder decodeObjectForKey:key];
if (![value isKindOfClass:[CPThemedValue class]])
{
var themedValue = CPThemedValueMake(aDefaultValue, anAttributeName, aTheme, aClass);
[themedValue setValue:value];
value = themedValue;
}
else
{
[value setDefaultValue:aDefaultValue];
[value setTheme:aTheme];
[value setIdentifier:anAttributeName];
[value setThemedClass:aClass];
}
return value;
}
+12
View File
@@ -172,6 +172,7 @@ CPWindowBelow = 2;
CPWindowWillCloseNotification = @"CPWindowWillCloseNotification";
CPWindowDidBecomeMainNotification = @"CPWindowDidBecomeMainNotification";
CPWindowDidResignMainNotification = @"CPWindowDidResignMainNotification";
CPWindowDidMoveNotification = @"CPWindowDidMoveNotification";
var SHADOW_MARGIN_LEFT = 20.0,
@@ -508,6 +509,8 @@ CPTexturedBackgroundWindowMask
#if PLATFORM(DOM)
CPDOMDisplayServerSetStyleLeftTop(_DOMElement, NULL, origin.x, origin.y);
#endif
[[CPNotificationCenter defaultCenter] postNotificationName:CPWindowDidMoveNotification object:self];
}
/*!
@@ -830,6 +833,8 @@ CPTexturedBackgroundWindowMask
*/
- (void)setDelegate:(id)aDelegate
{
// FIXME: Unregister for notifications!
_delegate = aDelegate;
_delegateRespondsToWindowWillReturnUndoManagerSelector = [_delegate respondsToSelector:@selector(windowWillReturnUndoManager:)];
@@ -849,6 +854,13 @@ CPTexturedBackgroundWindowMask
selector:@selector(windowDidResignMain:)
name:CPWindowDidResignMainNotification
object:self];
if ([_delegate respondsToSelector:@selector(windowDidMove:)])
[defaultCenter
addObserver:_delegate
selector:@selector(windowDidMove:)
name:CPWindowDidMoveNotification
object:self];
}
/*!
+2 -1
View File
@@ -127,7 +127,8 @@ var HUD_TITLEBAR_HEIGHT = 26.0;
[_titleField setHitTests:NO];
[_titleField setFont:[CPFont systemFontOfSize:11.0]];
[_titleField setTextColor:[CPColor whiteColor]];
[_titleField setTextShadow:[CPShadow shadowWithOffset:CPSizeMake(0.0, 1.0) blurRadius:2.0 color:[CPColor blackColor]]];
[_titleField setTextShadowColor:[CPColor blackColor]];
[_titleField setTextShadowOffset:CGSizeMake(0.0, 1.0)];
[_titleField setAutoresizingMask:CPViewWidthSizable];
// FIXME: Make this to CPLineBreakByTruncatingMiddle once it's implemented.
+8 -3
View File
@@ -66,7 +66,7 @@ var CPCibObjectDataKey = @"CPCibObjectDataKey";
}
- (BOOL)instantiateCibWithExternalNameTable:(CPDictionary)anExternalNameTable
{
{
var unarchiver = [[_CPCibKeyedUnarchiver alloc] initForReadingWithData:_data bundle:_bundle],
objectData = [unarchiver decodeObjectForKey:CPCibObjectDataKey];
@@ -84,10 +84,13 @@ var CPCibObjectDataKey = @"CPCibObjectDataKey";
[CPApp setMainMenu:menu];
[CPMenu setMenuBarVisible:YES];
}
if (topLevelObjects)
[topLevelObjects addObjectsFromArray:[objectData topLevelObjects]];
// Display Visible Windows.
[[objectData visibleWindows] makeObjectsPerformSelector:@selector(makeKeyAndOrderFront:) withObject:self];
/*
// [objectData establishConnectionsWithOwner:owner topLevelObjects:topLevelObjects];
// [objectData cibInstantiateWithOwner:owner topLevelObjects:topLevelObjects];
@@ -135,6 +138,8 @@ var CPCibObjectDataKey = @"CPCibObjectDataKey";
// Display visible windows.
return YES;*/
return YES;
}
- (BOOL)instantiateCibWithOwner:(id)anOwner topLevelObjects:(CPArray)topLevelObjects
+7 -2
View File
@@ -89,6 +89,11 @@
return _namesKeys[index];
}
- (CPSet)visibleWindows
{
return _visibleWindows;
}
@end
var _CPCibObjectDataNamesKeysKey = @"_CPCibObjectDataNamesKeysKey",
@@ -151,7 +156,7 @@ var _CPCibObjectDataNamesKeysKey = @"_CPCibObjectDataNamesKeysKey
_fileOwner = [aCoder decodeObjectForKey:_CPCibObjectDataFileOwnerKey];
// CPSet _visibleWindows;
_visibleWindows = [aCoder decodeObjectForKey:_CPCibObjectDataVisibleWindowsKey];
}
return self;
@@ -186,7 +191,7 @@ var _CPCibObjectDataNamesKeysKey = @"_CPCibObjectDataNamesKeysKey
[aCoder encodeObject:_fileOwner forKey:_CPCibObjectDataFileOwnerKey];
// CPCustomObject _fileOwner;
// CPSet _visibleWindows;
[aCoder encodeObject:_visibleWindows forKey:_CPCibObjectDataVisibleWindowsKey];
}
- (void)establishConnectionsWithExternalNameTable:(CPDictionary)anExternalNameTable
+11 -11
View File
@@ -160,7 +160,7 @@ var HORIZONTAL_MARGIN = 3.0,
_verticalAlignment = anAlignment;
_flags |= _CPImageAndTextViewVerticalAlignmentChangedFlag;
[self setNeedsDisplay:YES];
[self setNeedsLayout];
}
- (unsigned)verticalAlignment
@@ -176,7 +176,7 @@ var HORIZONTAL_MARGIN = 3.0,
_lineBreakMode = aLineBreakMode;
_flags |= _CPImageAndTextViewLineBreakModeChangedFlag;
[self setNeedsDisplay:YES];
[self setNeedsLayout];
}
- (CPLineBreakMode)lineBreakMode
@@ -192,7 +192,7 @@ var HORIZONTAL_MARGIN = 3.0,
_imagePosition = anImagePosition;
_flags |= _CPImageAndTextViewImagePositionChangedFlag;
[self setNeedsDisplay:YES];
[self setNeedsLayout];
}
- (CPCellImagePosition)imagePosition
@@ -208,7 +208,7 @@ var HORIZONTAL_MARGIN = 3.0,
_imageScaling = anImageScaling;
_flags |= _CPImageAndTextViewImageScalingChangedFlag;
[self setNeedsDisplay:YES];
[self setNeedsLayout];
}
- (void)imageScaling
@@ -242,7 +242,7 @@ var HORIZONTAL_MARGIN = 3.0,
_flags |= _CPImageAndTextViewFontChangedFlag;
_textSize = NULL;
[self setNeedsDisplay:YES];
[self setNeedsLayout];
}
- (CPFont)font
@@ -258,7 +258,7 @@ var HORIZONTAL_MARGIN = 3.0,
_textShadowColor = aColor;
_flags |= _CPImageAndTextViewTextShadowColorChangedFlag;
[self setNeedsDisplay:YES];
[self setNeedsLayout];
}
- (CPColor)textShadowColor
@@ -273,7 +273,7 @@ var HORIZONTAL_MARGIN = 3.0,
_textShadowOffset = _CGSizeMakeCopy(anOffset);
[self setNeedsDisplay:YES];
[self setNeedsLayout];
}
- (CGSize)textShadowOffset
@@ -289,7 +289,7 @@ var HORIZONTAL_MARGIN = 3.0,
_image = anImage;
_flags |= _CPImageAndTextViewImageChangedFlag;
[self setNeedsDisplay:YES];
[self setNeedsLayout];
}
- (CPImage)image
@@ -307,7 +307,7 @@ var HORIZONTAL_MARGIN = 3.0,
_textSize = NULL;
[self setNeedsDisplay:YES];
[self setNeedsLayout];
}
- (CPString)text
@@ -315,7 +315,7 @@ var HORIZONTAL_MARGIN = 3.0,
return _text;
}
- (void)drawRect:(CGRect)aRect
- (void)layoutSubviews
{
#if PLATFORM(DOM)
var needsDOMTextElement = _imagePosition !== CPImageOnly && ([_text length] > 0),
@@ -677,7 +677,7 @@ var HORIZONTAL_MARGIN = 3.0,
{
if (!_textSize)
_textSize = [_text sizeWithFont:_font ? _font : [CPFont systemFontOfSize:12.0]];
if (_imagePosition === CPImageLeft || _imagePosition === CPImageRight)
{
size.width += _textSize.width + HORIZONTAL_MARGIN;
-18
View File
@@ -36,24 +36,6 @@
{
[self sendActionOn:CPLeftMouseUpMask];
// Shoudl we stub this out?
var theme = nil,
theClass = [self class];
_alignment = CPThemedValueMake(CPLeftTextAlignment, "alignment", theme, theClass);
_verticalAlignment = CPThemedValueMake(CPTopVerticalTextAlignment, "vertical-alignment", theme, theClass);
_lineBreakMode = CPThemedValueMake(CPLineBreakByClipping, "line-break-mode", theme, theClass);
_textColor = CPThemedValueMake([CPColor blackColor], "text-color", theme, theClass);
_font = CPThemedValueMake([CPFont systemFontOfSize:12.0], "font", theme, theClass);
_textShadowColor = CPThemedValueMake(nil, @"text-shadow-color", theme, theClass);
_textShadowOffset = CPThemedValueMake(CGSizeMake(0.0, 0.0), "text-shadow-offset", theme, theClass);
_imagePosition = CPThemedValueMake(CPImageLeft, @"image-position", theme, theClass);
_imageScaling = CPThemedValueMake(CPScaleToFit, "image-scaling", theme, theClass);
var cell = [aCoder decodeObjectForKey:@"NSCell"];
[self setObjectValue:[cell objectValue]];
-10
View File
@@ -38,16 +38,6 @@
_minValue = [cell minValue];
_maxValue = [cell maxValue];
_altIncrementValue = [cell altIncrementValue];
var theme = nil,
theClass = [self class];
_knobColor = CPThemedValueMake(nil, "knob-color", theme, theClass);
_knobSize = CPThemedValueMake(CGSizeMakeZero(), "knob-size", theme, theClass);
_trackWidth = CPThemedValueMake(0.0, "track-width", theme, theClass);
_horizontalTrackColor = CPThemedValueMake(nil, "horizontal-track-color", theme, theClass);
_verticalTrackColor = CPThemedValueMake(nil, "vertical-track-color", theme, theClass);
}
return self;
+3
View File
@@ -92,6 +92,9 @@
[subview setFrameOrigin:CGPointMake(CGRectGetMinX(frame), height - CGRectGetMaxY(frame))];
}
}
_themedAttributes = {};
[self _loadThemedAttributes];
}
return self;