From: Adam M. <ama...@us...> - 2005-12-30 01:23:09
|
Update of /cvsroot/bibdesk/bibdesk In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19073 Modified Files: Tag: BR_1x NSTextView_BDSKExtensions.m Log Message: Use lightGrayColor for highlight. Even though I don't really like it, we should be consistent. Use temporary attributes via the layout manager instead of actually adding the attributes to the text storage, so the highlights don't print. Index: NSTextView_BDSKExtensions.m =================================================================== RCS file: /cvsroot/bibdesk/bibdesk/NSTextView_BDSKExtensions.m,v retrieving revision 1.5.2.5 retrieving revision 1.5.2.6 diff -C2 -d -r1.5.2.5 -r1.5.2.6 *** NSTextView_BDSKExtensions.m 30 Dec 2005 00:01:08 -0000 1.5.2.5 --- NSTextView_BDSKExtensions.m 30 Dec 2005 01:22:57 -0000 1.5.2.6 *************** *** 122,127 **** --- 122,131 ---- NSEnumerator *e = [strings objectEnumerator]; NSString *substring; + NSTextStorage *textStorage = [self textStorage]; + + [textStorage beginEditing]; while(substring = [e nextObject]) [self highlightOccurrencesOfString:substring]; + [textStorage endEditing]; } *************** *** 134,145 **** unsigned int length = [string length]; ! // yellow highlight; Mail.app uses a gray, but I don't like the (lack of) contrast with text ! static NSColor *highlightColor = nil; ! if(highlightColor == nil) ! highlightColor = [[NSColor colorWithCalibratedRed:1.0 green:1.0 blue:0.15 alpha:1.0] retain]; ! [textStorage beginEditing]; while(range.location != NSNotFound){ ! [textStorage addAttribute:NSBackgroundColorAttributeName value:highlightColor range:range]; maxRangeLoc = NSMaxRange(range); range = [string rangeOfString:substring options:NSCaseInsensitiveSearch range:NSMakeRange(maxRangeLoc, length - maxRangeLoc)]; --- 138,157 ---- unsigned int length = [string length]; ! // Mail.app appears to use a light gray highlight, which is rather ugly, but we don't want to use the selected text highlight ! static NSDictionary *highlightAttributes = nil; ! if(highlightAttributes == nil) ! highlightAttributes = [[NSDictionary alloc] initWithObjectsAndKeys:[NSColor lightGrayColor], NSBackgroundColorAttributeName, nil]; ! ! // use the layout manager to add temporary attributes; the advantage for our purpose is that temporary attributes don't print ! NSLayoutManager *layoutManager = [self layoutManager]; ! OBPRECONDITION(layoutManager); ! if(layoutManager == nil) ! return; ! ! // docs say we can nest beginEditing/endEditing messages, so we'll make sure the changes are processed in a batch [textStorage beginEditing]; while(range.location != NSNotFound){ ! ! [layoutManager addTemporaryAttributes:highlightAttributes forCharacterRange:range]; maxRangeLoc = NSMaxRange(range); range = [string rangeOfString:substring options:NSCaseInsensitiveSearch range:NSMakeRange(maxRangeLoc, length - maxRangeLoc)]; |