Re: Initializing NSDecimalTabStopType returns NSRightTabStopType
Re: Initializing NSDecimalTabStopType returns NSRightTabStopType
- Subject: Re: Initializing NSDecimalTabStopType returns NSRightTabStopType
- From: Ross Carter <email@hidden>
- Date: Fri, 22 Feb 2008 12:24:26 -0500
Thanks, Aki. That's exactly what I needed. This now works:
NSTextTabType tabType = [textTab tabStopType];
if (tabType == NSRightTabStopType && [[textTab options]
objectForKey:NSTabColumnTerminatorsAttributeName] != nil) tabType =
NSDecimalTabStopType;
Ross
On Feb 21, 2008, at 5:48 PM, Aki Inoue wrote:
Ross,
Thank you for filing the bug.
Indeed there is a bug in NSTextTab.
Fortunately, it only affects -tabStopType method. The actual
instance created works as a decimal tab.
Aki
On 2008/02/21, at 14:30, Ross Carter wrote:
I've filed a bug on this (5757951) but I hope there's a workaround.
The initializer for creating a NSTextTab of type
NSDecimalTabStopType is initWithAlignment:
(NSTextAlignment)alignment location:(CGFloat)location options:
(NSDictionary *)options. There is no NSTextAlignment for dec tabs,
so you use NSRightTextAlignment, and the initializer apparently
figures out that you want a decimal tab by looking in the options
dictionary.
But usually I get a right-aligned textTab even though I've
requested a decimal-aligned textTab. Sometimes an incantation can
help:
// Create an options dictionary to be used in creating a decimal
NSTextTab:
NSCharacterSet *charSet = [NSCharacterSet
characterSetWithCharactersInString:@"."];
NSDictionary *optionsDict = [NSDictionary
dictionaryWithObject:charSet
forKey:NSTabColumnTerminatorsAttributeName];
// try to create a decimal NSTextTab using that options dict:
NSTextTab *textTab1 = [[NSTextTab alloc]
initWithTextAlignment:NSRightTextAlignment
location:location
options:optionsDict];
NSLog(@"tabStopType is %i", [textTab1 tabStopType]);
// Doesn't work; tabStopType is 1 (right)
// Create and release a default decimal NSTextTab:
NSTextTab *dummyTab = [[NSTextTab alloc]
initWithType:NSDecimalTabStopType location:location];
[dummyTab release];
// Now try again to create the decimal NSTextTab using the same
options dict:
NSTextTab *textTab2 = [[NSTextTab alloc]
initWithTextAlignment:NSRightTextAlignment
location:location
options:optionsDict];
NSLog(@"tabStopType is %i", [textTab2 tabStopType]);
// It works; tabStopType is 3 (decimal)
but sometimes I get the right-aligned textTab no matter what.
Any ideas on a sure-fire way to initialize a decimal NSTextTab?
Ross
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden