*** /cvs/gnustep/core/gui/Source/NSCell.m	Fri Jan 30 20:49:00 2004
--- NSCell.m	Wed Mar 17 18:15:46 2004
***************
*** 1155,1174 ****
  
    if (cv != nil)
      {  
!       NSRect   cvBounds = [cv bounds];
        NSWindow *cvWin = [cv window];
  
        [cv lockFocus];
        
        [self setNextState];
!       [self highlight: YES withFrame: cvBounds inView: cv];
        [cvWin flushWindow];
        
        // Wait approx 1/10 seconds
        [[NSRunLoop currentRunLoop] 
  	runUntilDate: [NSDate dateWithTimeIntervalSinceNow: 0.1]];
        
!       [self highlight: NO withFrame: cvBounds inView: cv];
        [cvWin flushWindow];
        
        [cv unlockFocus];
--- 1156,1175 ----
  
    if (cv != nil)
      {  
!       NSRect   cellFrame = [[self container] frameForCell: self];
        NSWindow *cvWin = [cv window];
  
        [cv lockFocus];
        
        [self setNextState];
!       [self highlight: YES withFrame: cellFrame inView: cv];
        [cvWin flushWindow];
        
        // Wait approx 1/10 seconds
        [[NSRunLoop currentRunLoop] 
  	runUntilDate: [NSDate dateWithTimeIntervalSinceNow: 0.1]];
        
!       [self highlight: NO withFrame: cellFrame inView: cv];
        [cvWin flushWindow];
        
        [cv unlockFocus];
***************
*** 2077,2082 ****
--- 2078,2102 ----
      }
    return self;
  }
+ 
+ - (NSRect) frameForCell: (NSCell *)cell {
+   [self subclassResponsibility: _cmd];
+   return NSMakeRect(0, 0, 0, 0);
+ }
+ 
+ - (void) setSupercell: (NSCell *) supercell
+ {
+   ASSIGN(_supercell, supercell);
+ }
+ 
+ - (id <GSCellContainer>) container
+ {
+   if (_supercell == nil)
+     return (NSControl *)[self controlView];
+     
+   return _supercell;
+ }
+ 
  @end
  
  @implementation NSCell (PrivateMethods)
