• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: NSTextFieldCell text color issue in NSTableView with source list highlighting
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSTextFieldCell text color issue in NSTableView with source list highlighting


  • Subject: Re: NSTextFieldCell text color issue in NSTableView with source list highlighting
  • From: Corbin Dunn <email@hidden>
  • Date: Fri, 13 Mar 2009 10:34:46 -0700

A followup on this particular problem that Jonathan reported for people to reference:

On Mar 12, 2009, at 3:51 AM, email@hidden wrote:

NSTableViewSelectionHighlightStyleSourceList.


The source list style attempts to add auto-formatting to the cell by setting the attributed string for you, if you give it a plain string. This is how the text automatically becomes bold. However, once the attributed string has been created, it will use the settings already set on the cell to format the value. -willDisplayCell: is the last thing that is called in -preparedCellAtColumn:row:, allowing the developer to change anything that the tableview automatically set.


- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id) aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger) rowIndex
{
// note that when the NSTableView Highlight mode is set to source list
// setting the text color of NSTextFieldCell seems to misbehave.
if ([aCell isKindOfClass:[NSTextFieldCell class]]) {
if ([aCell isHighlighted]) {

Instead of using -isHighlighted, a more appropriate check would be:

if ([aCell backgroundStyle] == NSBackgroundStyleDark || [aCell backgroundStyle] == NSBackgroundStyleLowered) {


			[aCell setTextColor: [NSColor lightGrayColor]];
		} else {
			[aCell setTextColor: [NSColor darkGrayColor]];
		}

Based on my above information, one can work around the issue by letting the cell reformat its value. This looses the custom bold attributes applied, but fixes the problem and is a work around:


                [aCell setStringValue:[aCell stringValue]];

	}
}


Alternatively, you could hook into the process earlier. The earliest point is -tableView:dataCellForTableColumn:row:. You could solve this type of issue with the following code:


- (NSCell *)tableView:(NSTableView *)tableView dataCellForTableColumn: (NSTableColumn *)tableColumn row:(NSInteger)row {
NSTextFieldCell *result = (NSTextFieldCell *)[tableColumn dataCell];
if ([[tableView selectedRowIndexes] containsIndex:row]) {
// This ignores the fact that we use different colors in a table that has the first responder status
[result setTextColor: [NSColor blueColor]];
} else {
[result setTextColor: [NSColor yellowColor]];
}
return result;
}


Either solution is perfectly acceptable, and we'll increase our documentation to help developers understand the process of displaying cells.

corbin



_______________________________________________

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


  • Follow-Ups:
    • Re: NSTextFieldCell text color issue in NSTableView with source list highlighting
      • From: Kyle Sluder <email@hidden>
References: 
 >NSTextFieldCell text color issue in NSTableView with source list highlighting (From: "email@hidden" <email@hidden>)

  • Prev by Date: Re: Performance problem with GC enabled
  • Next by Date: Re: Performance problem with GC enabled
  • Previous by thread: Re: NSTextFieldCell text color issue in NSTableView with source list highlighting
  • Next by thread: Re: NSTextFieldCell text color issue in NSTableView with source list highlighting
  • Index(es):
    • Date
    • Thread