Hi Kent,

You're absolutely right! Thanks for sharing this. For myself, I have tables and 
outline views that draw a custom highlight and need the text colour to stay 
black, but your solution works for that too. The key, as you say, is calling 
-setHighlighted: to NO on the cell in the delegate method, and that is what I 
had missed before (given that I want to draw a highlight in my table, it hadn't 
occurred to me that I needed to prevent the cell drawing a highlight - but of 
course, that is all the private method was doing anyway). This prevents the 
cell from changing its text colour but I can still draw my custom highlights in 
the table/outline view subclasses. I need to test on Tiger (which I support and 
where NSBackgroundStyleLight isn't supported) to check that the private method 
isn't necessary there, but I believe you have just obviated my need for the 
private method altogether, which is great as resorting to private methods is 
never good - thanks! It seems
 you have definitely found the best way of doing this.

All the best,
Keith



________________________________
From: Kent Hauser <k...@khauser.net>
To: Keith Blount <keithblo...@yahoo.com>; Corbin Dunn <corb...@apple.com>
Cc: cocoa-dev@lists.apple.com
Sent: Sun, March 14, 2010 8:09:27 PM
Subject: Re: [NSTableview] can't make selected text stay black

Now I'm all confused. Everything's working now where it wasn't before.

I'm having the desired result (selected cell not appearing selected) by 
following Corbin's original advice: 

override NSTable's -hightlightSelectionInClipRect: to do nothing & having the 
delegate method
- tableView:willDisplayCell:forTableColumn:row:   perform setHighlighted:NO  & 
setBackgroundStyle:NSBackgroundStyleLight on the cell.

I'm getting backColor text as desired.

Also, if I send [cell setHighlighted:NO], the cell's 
-highlightColorWithFrame:controlView: is not called, shao wholesale subclassing 
of cells does not appear to be needed.

My guess as to what I had wrong before was that I had set hightlight style to 
"source list" in IB when exploring & had not set it back to normal. I'm testing 
now with a programmaticly generated NSTableView.

Thanks for all your help. 

Kent


On Fri, Mar 12, 2010 at 3:48 PM, Keith Blount <keithblo...@yahoo.com> wrote:

Actually, after testing this, does overriding NSCell's 
-highlightColorWithFrame:controlView: really have the same effect as overriding 
the _highlightColorForCell: private message? I assume the latter just calls the 
former, but I must be doing something wrong because overriding 
-highlightColorWithFrame: didn't have the desired effect for me. Please see the 
following demo project:
>
>http://www.literatureandlatte.com/misc/BlackSelectedTableText.zip
>
>>Note that in that simple project, MyTextFieldCell overrides 
>>-highlightColorWithFrame:controlView: to return nil (and there is an NSLog in 
>>there to ensure it is getting called), but although doing so prevents the 
>>highlight colour from getting drawn, the text still gets drawn in white (even 
>>though the -willDisplayCell: delegate method in MyDocument is setting it to 
>>black). Contrast this with uncommenting the _highlightColorForCell: method 
>>that returns nil in MyTableView, which has the desired effect of ensuring the 
>>text gets drawn in black (which is what the op was after and is the reason I 
>>ended up resorting to this private message).
>
>>Am I missing something obvious? Is there something else that needs to be used 
>>in conjunction with this to force the text to be drawn in black even when 
>>highlighted? (To put this in context, I use NSOutlineView to provide an 
>>OmniOutliner-style outline with a light blue selection, so the text needs to 
>>be black even when highlighted given the light highlight, which is 
>>custom-drawn.)
>
>>Many thanks and all the best,
>
>Keith
>
>
>>----- Original Message ----
>>From: Corbin Dunn <corb...@apple.com>
>>To: Keith Blount <keithblo...@yahoo.com>
>>Cc: cocoa-dev@lists.apple.com; k...@khauser.net
>>Sent: Fri, March 12, 2010 11:29:08 PM
>>Subject: Re: [NSTableview] can't make selected text stay black
>
>>>
>
>> P.S. I'm hesitant about mentioning private methods here, but I don't think 
>> there's another way of doing it - I filed an enhancement request for this 
>> method to be made public back in April '06, ID#4521167, so please do the 
>> same if you think it would be useful. I'm CC'ing Corbin so he can straighten 
>> me out on the private method thing if this is totally the wrong advice, but 
>> it works for me. :)
>
>>Thank you for logging the bug -- I do realize we could make this better. 
>>Currently, there is a way to do it (override highlightColorWithFrame:), so 
>>adding the requested method is "nice to have", but not essential.
>
>>corbin
>
>
>
>



      
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to