On Sun, Jun 8, 2008 at 10:57 AM, Fred Kiefer <[EMAIL PROTECTED]> wrote: > I was completely wrong here. The problem is at a totally different place. > Look at the code in NSTextFieldsCell that Nicola changed a few months ago: >
Ahh, yes changing the below fixes it here i was confused because it is asked to redraw the edited cell frame, but in the case that it is, the code is doing what it should by not redrawing. > > - (void) drawInteriorWithFrame: (NSRect)cellFrame inView: > (NSView*)controlView > { > /* Do nothing if there is already a text editor doing the drawing; > * otherwise, we draw everything twice. That is bad if there are > * any transparency involved (eg, even an anti-alias font!) because > * if the semi-transparent pixels are drawn over themselves they > * become less transparent (eg, an anti-alias font becomes darker > * and gives the impression of being bold). > */ > if (([controlView respondsToSelector: @selector(currentEditor)] == NO) > || ([(NSTextField *)controlView currentEditor] == nil)) > { > if (_textfieldcell_draws_background) > { > if ([self isEnabled]) > { > [_background_color set]; > } > else > { > [[NSColor controlBackgroundColor] set]; > } > NSRectFill([self drawingRectForBounds: cellFrame]); > } > > [super drawInteriorWithFrame: cellFrame inView: controlView]; > } > } > > This basically means that a text field cell will only draw itself, when > there is no editor for the containing control view. This is nice and fine, > when the text field cell is the only cell of a text field, but in the matrix > and table view case this stops all the cells in the controller from drawing > themselves while there is an editor. > > How to get of this trap? We could check if the cell is the selected cell of > its control view and only then not draw it in the editing case. This may > work as a table view has no clear notion of a selected cell and so all cells > will still get drawn, whereas matrix and normal control handle this > correctly. > > Another possibility is to move the "don't draw" check into the control view. > This looks better to me. A cell should always draw itself when asked to do > so, the decision should be put somewhere else. > that seems alright to me, and appears to be what drawRow:clipRect: in NSTableView is already doing. i've looked at the bug report that code was added for but didn't have any luck reproducing it with the fix disabled... > Any better ideas out there? > no but thanks for looking into this. _______________________________________________ Gnustep-dev mailing list Gnustep-dev@gnu.org http://lists.gnu.org/mailman/listinfo/gnustep-dev