diff --git a/Source/CandidateUI/VTCandidateController.h b/Source/CandidateUI/VTCandidateController.h index 4b7e1068..39ff3270 100644 --- a/Source/CandidateUI/VTCandidateController.h +++ b/Source/CandidateUI/VTCandidateController.h @@ -42,7 +42,6 @@ NSArray *_keyLabels; NSFont *_keyLabelFont; NSFont *_candidateFont; - NSFont *_CJKCandidateFont; } - (void)reloadData; @@ -65,5 +64,4 @@ @property (copy, nonatomic) NSArray *keyLabels; @property (copy, nonatomic) NSFont *keyLabelFont; @property (copy, nonatomic) NSFont *candidateFont; -@property (copy, nonatomic) NSFont *CJKCandidateFont; @end diff --git a/Source/CandidateUI/VTCandidateController.m b/Source/CandidateUI/VTCandidateController.m index d6b07b65..44e97db5 100644 --- a/Source/CandidateUI/VTCandidateController.m +++ b/Source/CandidateUI/VTCandidateController.m @@ -33,14 +33,12 @@ @synthesize keyLabels = _keyLabels; @synthesize keyLabelFont = _keyLabelFont; @synthesize candidateFont = _candidateFont; -@synthesize CJKCandidateFont = _CJKCandidateFont; - (void)dealloc { [_keyLabels release]; [_keyLabelFont release]; [_candidateFont release]; - [_CJKCandidateFont release]; [super dealloc]; } @@ -52,7 +50,6 @@ _keyLabels = [[NSArray arrayWithObjects:@"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", nil] retain]; _keyLabelFont = [[NSFont systemFontOfSize:14.0] retain]; _candidateFont = [[NSFont systemFontOfSize:18.0] retain]; - _CJKCandidateFont = [_candidateFont retain]; } return self; diff --git a/Source/CandidateUI/VTHorizontalCandidateController.m b/Source/CandidateUI/VTHorizontalCandidateController.m index 33009682..b8b97665 100644 --- a/Source/CandidateUI/VTHorizontalCandidateController.m +++ b/Source/CandidateUI/VTHorizontalCandidateController.m @@ -172,7 +172,7 @@ - (void)layoutCandidateView { - [_candidateView setKeyLabelFont:_keyLabelFont candidateFont:_candidateFont CJKCandidateFont:_CJKCandidateFont]; + [_candidateView setKeyLabelFont:_keyLabelFont candidateFont:_candidateFont]; NSMutableArray *candidates = [NSMutableArray array]; NSUInteger count = [_delegate candidateCountForController:self]; diff --git a/Source/CandidateUI/VTHorizontalCandidateView.h b/Source/CandidateUI/VTHorizontalCandidateView.h index cddf1a30..c5295503 100644 --- a/Source/CandidateUI/VTHorizontalCandidateView.h +++ b/Source/CandidateUI/VTHorizontalCandidateView.h @@ -37,7 +37,6 @@ CGFloat _cellPadding; NSDictionary *_keyLabelAttrDict; NSDictionary *_candidateAttrDict; - NSDictionary *_CJKCandidateAttrDict; NSArray *_elementWidths; NSUInteger _highlightedIndex; NSUInteger _trackingHighlightedIndex; @@ -46,7 +45,7 @@ } - (void)setKeyLabels:(NSArray *)labels displayedCandidates:(NSArray *)candidates; -- (void)setKeyLabelFont:(NSFont *)labelFont candidateFont:(NSFont *)candidateFont CJKCandidateFont:(NSFont *)candidateFontCJK; +- (void)setKeyLabelFont:(NSFont *)labelFont candidateFont:(NSFont *)candidateFont; @property (readonly, nonatomic) NSSize sizeForView; @property (assign, nonatomic) NSUInteger highlightedIndex; diff --git a/Source/CandidateUI/VTHorizontalCandidateView.m b/Source/CandidateUI/VTHorizontalCandidateView.m index 87661f16..13a94339 100644 --- a/Source/CandidateUI/VTHorizontalCandidateView.m +++ b/Source/CandidateUI/VTHorizontalCandidateView.m @@ -43,7 +43,6 @@ NS_INLINE CGFloat max(CGFloat a, CGFloat b) { return a > b ? a : b; } [_displayedCandidates release]; [_keyLabelAttrDict release]; [_candidateAttrDict release]; - [_CJKCandidateAttrDict release]; [_elementWidths release]; [super dealloc]; } @@ -67,7 +66,6 @@ NS_INLINE CGFloat max(CGFloat a, CGFloat b) { return a > b ? a : b; } for (NSUInteger index = 0; index < count; index++) { NSRect labelRect = [[_keyLabels objectAtIndex:index] boundingRectWithSize:baseSize options:NSStringDrawingUsesLineFragmentOrigin attributes:_keyLabelAttrDict]; - // TODO: Handle CJK text drawing NSRect candidateRect = [[_displayedCandidates objectAtIndex:index] boundingRectWithSize:baseSize options:NSStringDrawingUsesLineFragmentOrigin attributes:_candidateAttrDict]; CGFloat width = max(labelRect.size.width, candidateRect.size.width) + _cellPadding; @@ -79,7 +77,7 @@ NS_INLINE CGFloat max(CGFloat a, CGFloat b) { return a > b ? a : b; } [tmp release]; } -- (void)setKeyLabelFont:(NSFont *)labelFont candidateFont:(NSFont *)candidateFont CJKCandidateFont:(NSFont *)candidateFontCJK +- (void)setKeyLabelFont:(NSFont *)labelFont candidateFont:(NSFont *)candidateFont { NSMutableParagraphStyle *paraStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] autorelease]; [paraStyle setAlignment:NSCenterTextAlignment]; @@ -101,17 +99,8 @@ NS_INLINE CGFloat max(CGFloat a, CGFloat b) { return a > b ? a : b; } nil] retain]; [tmp release]; - tmp = _CJKCandidateAttrDict; - _CJKCandidateAttrDict = [[NSDictionary dictionaryWithObjectsAndKeys: - candidateFontCJK, NSFontAttributeName, - paraStyle, NSParagraphStyleAttributeName, - [NSColor textColor], NSForegroundColorAttributeName, - nil] retain]; - [tmp release]; - - CGFloat labelFontSize = [labelFont pointSize]; - CGFloat candidateFontSize = max([candidateFont pointSize], [candidateFontCJK pointSize]); + CGFloat candidateFontSize = [candidateFont pointSize]; CGFloat biggestSize = max(labelFontSize, candidateFontSize); _keyLabelHeight = ceil(labelFontSize * 1.20); diff --git a/Source/CandidateUI/VTVerticalCandidateController.m b/Source/CandidateUI/VTVerticalCandidateController.m index 7c4b1b15..c089d19f 100644 --- a/Source/CandidateUI/VTVerticalCandidateController.m +++ b/Source/CandidateUI/VTVerticalCandidateController.m @@ -112,7 +112,7 @@ static const CGFloat kCandidateTextLeftMargin = 8.0; - (void)reloadData { - _maxCandidateAttrStringWidth = ceil(max([_candidateFont pointSize], [_CJKCandidateFont pointSize])) * 2.0 + kCandidateTextPadding; + _maxCandidateAttrStringWidth = ceil([_candidateFont pointSize] * 2.0 + kCandidateTextPadding); [_tableView reloadData]; [self layoutCandidateView]; @@ -199,9 +199,9 @@ static const CGFloat kCandidateTextLeftMargin = 8.0; { NSString *candidate = [_delegate candidateController:self candidateAtIndex:row]; - // TODO: Handle CJK font fallback NSAttributedString *attrString = [[[NSAttributedString alloc] initWithString:candidate attributes:[NSDictionary dictionaryWithObjectsAndKeys:_candidateFont, NSFontAttributeName, _candidateTextParagraphStyle, NSParagraphStyleAttributeName, nil]] autorelease]; + // we do more work than what this method is expected; normally not a good practice, but for the amount of data (9 to 10 rows max), we can afford the overhead // expand the window width if text overflows NSRect boundingRect = [attrString boundingRectWithSize:NSMakeSize(10240.0, 10240.0) options:NSStringDrawingUsesLineFragmentOrigin]; @@ -235,6 +235,11 @@ static const CGFloat kCandidateTextLeftMargin = 8.0; [_keyLabelStripView setNeedsDisplay:YES]; } } + + // fix a subtle on 10.7 that, since we force the scroller to appear, scrolling sometimes shows a temporarily "broken" scroll bar (but quickly disappears) + if ([_scrollView hasVerticalScroller]) { + [[_scrollView verticalScroller] setNeedsDisplay]; + } return attrString; } @@ -247,7 +252,7 @@ static const CGFloat kCandidateTextLeftMargin = 8.0; NSInteger firstVisibleRow = [_tableView rowAtPoint:[_scrollView documentVisibleRect].origin]; _keyLabelStripView.highlightedIndex = selectedRow - firstVisibleRow; [_keyLabelStripView setNeedsDisplay:YES]; - } + } } - (void)rowDoubleClicked:(id)sender @@ -333,7 +338,7 @@ static const CGFloat kCandidateTextLeftMargin = 8.0; return; } - CGFloat candidateFontSize = ceil(max([_candidateFont pointSize], [_CJKCandidateFont pointSize])); + CGFloat candidateFontSize = ceil([_candidateFont pointSize]); CGFloat keyLabelFontSize = ceil([_keyLabelFont pointSize]); CGFloat fontSize = max(candidateFontSize, keyLabelFontSize); diff --git a/Source/InputMethodController.mm b/Source/InputMethodController.mm index 9c8b88a7..cffdc7d8 100644 --- a/Source/InputMethodController.mm +++ b/Source/InputMethodController.mm @@ -1024,7 +1024,6 @@ public: LTCurrentCandidateController.keyLabelFont = [NSFont systemFontOfSize:keyLabelSize]; LTCurrentCandidateController.candidateFont = [NSFont systemFontOfSize:textSize]; - LTCurrentCandidateController.CJKCandidateFont = [NSFont systemFontOfSize:textSize]; LTCurrentCandidateController.keyLabels = [NSArray arrayWithObjects:@"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", nil]; [self collectCandidates];