• 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
Drawing of text in outline view image and text cell correct in Leopard, broken in snow leopard
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Drawing of text in outline view image and text cell correct in Leopard, broken in snow leopard


  • Subject: Drawing of text in outline view image and text cell correct in Leopard, broken in snow leopard
  • From: Kevin Meaney <email@hidden>
  • Date: Tue, 26 Jul 2011 22:07:40 +0100

I'm having problems with code that works fine on Leopard, and broken in Snow Leopard. In Leopard the drawing of text in a selected cell with a colour label applied is drawing white instead of black, if the selected cell is the first in a list of items with a colour label applied.

Correct behaviour in: Leopard
http://yvs.eu.com/files/Leopard.png
http://yvs.eu.com/files/Leopard2.png

Correct behaviour in Snow Leopard when it is not the first item with a colour label selected:
http://yvs.eu.com/files/SnowLeopard2.png

I have an NSOutlineView and I use a subclass of a view controller to control it and to be its delegate.

I use a modified version of Apple's ImageAndTextCell class to draw each item in the single column outline view. The image and text cell class draws the image and a colour label where necessary like those applied in Finder and then asks super (NSTextCell) to draw the text.

In the controller and delegate I have implemented the delegate method where I set the colour label if necessary:

- (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell
                        forTableColumn:(NSTableColumn *)tableColumn item:(id)item

{
    MYImageAndTextCell *imgTxtCell = cell;
    MyNode *myNode = item;

    // The if is strictly not necessary but highlights that the label name is NULL when there is no label.
    if ([myNode colourLabel])
        [cell setLabelName:[myNode colourLabel]];
    else
        [cell setLabelName:NULL];
}
In the ImageAndTextCell I have gone over the top in trying to apply the correct background style when I have a colour label applied (NSBackgroundStyleLight which previously resulted in the text drawn black). I have overridden interiorBackgroundStyle drawWithFrame:cellFrame:inView and drawInteriorWithFrame:inView

- (NSBackgroundStyle)interiorBackgroundStyle
{
    if ([self labelName])
        return NSBackgroundStyleLight;
    return [super interiorBackgroundStyle];
}

- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView*)controlView
{
    if ([self labelName])
    {
        ...
        NSDrawThreePartImage(labelFrame, leftEndCapImage, middleImage,
                            rightEndCapImage, FALSE, NSCompositeSourceOver,
                            1.0, TRUE);
        [self setBackgroundStyle:NSBackgroundStyleLight];
    }
    // super will draw the text
    [super drawInteriorWithFrame:cellFrame inView:controlView];
}

- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView*)controlView
{
    // Carve up the cell so that part of the cell is the image, and the other part is the text cell.
    NSSize imageSize [[self image] size] ;
    NSRect imageFrame;
    NSRect textFrame;

    NSDivideRect(cellFrame, &imageFrame, &textFrame, 5 + imageSize.width, NSMinXEdge);
    [[self image] compositeToPoint:imageFrame.origin operation:NSCompositeSourceOver];
    if ([self labelName])
        [self setBackgroundStyle:NSBackgroundStyleLight];
    [super drawWithFrame:textFrame inView:controlView];
}
What changed in snow leopard to override setting the background style to NSBackgroundStyleLight for the first item? What am I doing wrong?

ktam_______________________________________________

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

  • Prev by Date: Drawing text in a ImageAndTextCell in a nsoutlineview works as desired in Leopard. Broken in Snow Leopard and Lion
  • Next by Date: Space-efficient saving for Versions?
  • Previous by thread: Drawing text in a ImageAndTextCell in a nsoutlineview works as desired in Leopard. Broken in Snow Leopard and Lion
  • Next by thread: Space-efficient saving for Versions?
  • Index(es):
    • Date
    • Thread