*** /cvs/gnustep/core/gui/Source/NSCell.m	Fri Jan 30 20:49:00 2004
--- NSCell.m	Mon Mar 22 21:58:45 2004
***************
*** 1143,1183 ****
    _cell.refuses_first_responder = flag;
  }
  
  - (void) performClick: (id)sender
  {
-   SEL action = [self action];
    NSView *cv = [self controlView];
  
    if(_cell.is_disabled == YES)
      {
        return;
      }
  
!   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];
  
        if (action)
  	{
  	  NS_DURING
  	    {
! 	      [(NSControl*)cv sendAction: action to: [self target]];
  	    }
  	  NS_HANDLER
  	    {
--- 1143,1193 ----
    _cell.refuses_first_responder = flag;
  }
  
+ /*
+  * The method below is deprecated, performClickWithFrame:inView: is 
+  * the right method to use now.
+  */
  - (void) performClick: (id)sender
  {
    NSView *cv = [self controlView];
  
+   if (cv != nil) 
+     [self performClickWithFrame: [cv bounds] inView: cv];
+ }
+ 
+ - (void) performClickWithFrame: (NSRect)cellFrame inView: (NSView *)controlView
+ {
+   SEL action = [self action];
+ 
    if(_cell.is_disabled == YES)
      {
        return;
      }
  
!   if (controlView != nil)
      {  
!       NSWindow *cvWin = [controlView window];
  
!       [controlView lockFocus];
        
        [self setNextState];
!       [self highlight: YES withFrame: cellFrame inView: controlView];
        [cvWin flushWindow];
        
        // Wait approx 1/10 seconds
        [[NSRunLoop currentRunLoop] 
  	runUntilDate: [NSDate dateWithTimeIntervalSinceNow: 0.1]];
        
!       [self highlight: NO withFrame: cellFrame inView: controlView];
        [cvWin flushWindow];
        
!       [controlView unlockFocus];
  
        if (action)
  	{
  	  NS_DURING
  	    {
! 	      [(NSControl*)controlView sendAction: action to: [self target]];
  	    }
  	  NS_HANDLER
  	    {
