¿Cómo puedo destacar manualmente una NSPopUpButtonCell cuando dibujándolo (dibujar usando blanco en lugar de negro)?

StackOverflow https://stackoverflow.com/questions/1162414

Pregunta

Tengo una celda personalizado compuesta de varias células, una de las cuales es una NSPopUpButtonCell.

Al dibujar mi celda personalizado destacó, quiero indicar que todas las subcélulas para resaltar así (por lo general, girando blanco).

Con, por ejemplo, un NSTextCell, si llamo setHighlighted:YES antes de llamar drawWithFrame:inView la célula se elaborará con el texto blanco, exactamente como lo quiero.

Esto no funciona con NSPopUpButtonCells. El texto solo sigue atrayendo como negro.

Parece que esto debería ser posible, desde que cayó un NSPopUpButtonCell en un NSTableView destaca correctamente.

Puede alguien me punto en la dirección correcta para fijar esto?

¿Fue útil?

Solución

está

Dónde anfitrión de esta costumbre + compuesto subclase NSCell?

-setHighlighted: SI no es lo que busca. A partir de la documentación:

  

Por defecto, este método no hace nada.   La clase NSButtonCell anula esta   Método para dibujar el botón con el   especificada por la apariencia   NSCellLightsByBackground,   NSCellLightsByContents, o   NSCellLightsByGray.

Normalmente la vista de host para una célula establecerá estilo del fondo de la celda, y la célula que utilizará durante el sorteo para mostrar misma manera apropiada. Propagar el estilo de fondo de la célula maestra a las subcélulas.

- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
    NSRect textRect, popUpRect;
    NSDivideRect(cellFrame, &textRect, &popUpRect, NSWidth(cellFrame) / 2, NSMinXEdge);

    /* Draw the text cell (self) */
    [super drawInteriorWithFrame: textRect inView: controlView];

    /* Draw our compound popup cell - create & release every time drawn only in example */
    NSPopUpButtonCell *popUpCell = [[NSPopUpButtonCell alloc] initTextCell: @"popup title"];
    [popUpCell setBordered: NO];
    [popUpCell setBackgroundStyle: [self backgroundStyle]];
    [popUpCell drawWithFrame: popUpRect inView: controlView];
    [popUpCell release];
}

Si usted es anfitrión de esta célula compuesta en un NSTableView, que debería ser suficiente para conseguir el fondo correcto para las filas seleccionadas.

Si usted es anfitrión de esto en su propio punto de vista, es posible que tenga que hacer un trabajo adicional. (Y que proporcionar detalles adicionales sobre el entorno de acogida antes de que podamos ofrecer consejos.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top