[webkit-changes] cvs commit: WebCore/kwq KWQComboBox.mm KWQListBox.mm KWQTextArea.mm KWQTextField.mm WebCoreBridge.mm

Beth bdakin at opensource.apple.com
Fri Oct 28 10:35:45 PDT 2005


bdakin      05/10/28 10:35:45

  Modified:    .        ChangeLog
               kwq      KWQComboBox.mm KWQListBox.mm KWQTextArea.mm
                        KWQTextField.mm WebCoreBridge.mm
  Log:
  Bug #:
  
  Revision  Changes    Path
  1.314     +27 -0     WebCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/WebCore/ChangeLog,v
  retrieving revision 1.313
  retrieving revision 1.314
  diff -u -r1.313 -r1.314
  --- ChangeLog	28 Oct 2005 17:14:11 -0000	1.313
  +++ ChangeLog	28 Oct 2005 17:35:39 -0000	1.314
  @@ -1,3 +1,30 @@
  +2005-10-28  Beth Dakin  <bdakin at apple.com>
  +
  +        Reviewed by John
  +
  +        Fix for <rdar://problem/4098083> REGRESSION (125-312): crash 
  +	in [KWQTableView resignFirstResponder] selecting from JS menu 
  +	(car4you.at, etc.)
  +
  +	Since it is possible that a render widget's eventFilterObject
  +	has been destroyed even though the render widget is still ref-ed,
  +	we need to nil-check the eventFilterObject before we use it to get
  +	the eventFilter.
  +
  +        * kwq/KWQComboBox.mm:
  +        (-[KWQPopUpButton becomeFirstResponder]): Added nil check.
  +        (-[KWQPopUpButton resignFirstResponder]): Added nil check.
  +        * kwq/KWQListBox.mm:
  +        (-[KWQTableView becomeFirstResponder]): Added nil check.
  +        (-[KWQTableView resignFirstResponder]): Added nil check.
  +        * kwq/KWQTextArea.mm:
  +        (-[KWQTextAreaTextView becomeFirstResponder]): Added nil check.
  +        (-[KWQTextAreaTextView resignFirstResponder]): Added nil check.
  +        * kwq/KWQTextField.mm:
  +        (-[KWQTextFieldController setHasFocus:]): Added nil check.
  +        * kwq/WebCoreBridge.mm:
  +        (-[WebCoreBridge elementForView:]): Added nil check.
  +
   2005-10-28  Adele Peterson  <adele at apple.com>
   
           Reviewed by Beth.
  
  
  
  1.72      +6 -3      WebCore/kwq/KWQComboBox.mm
  
  Index: KWQComboBox.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQComboBox.mm,v
  retrieving revision 1.71
  retrieving revision 1.72
  diff -u -r1.71 -r1.72
  --- KWQComboBox.mm	25 Oct 2005 21:14:43 -0000	1.71
  +++ KWQComboBox.mm	28 Oct 2005 17:35:43 -0000	1.72
  @@ -499,7 +499,8 @@
                       layer->scrollRectToVisible(w->absoluteBoundingBoxRect());
               }
               QFocusEvent event(QEvent::FocusIn);
  -            const_cast<QObject *>(widget->eventFilterObject())->eventFilter(widget, &event);
  +            if (widget->eventFilterObject())
  +                const_cast<QObject *>(widget->eventFilterObject())->eventFilter(widget, &event);
           }
       }
       return become;
  @@ -512,8 +513,10 @@
           QWidget *widget = [self widget];
           if (widget) {
               QFocusEvent event(QEvent::FocusOut);
  -            const_cast<QObject *>(widget->eventFilterObject())->eventFilter(widget, &event);
  -            [KWQKHTMLPart::bridgeForWidget(widget) formControlIsResigningFirstResponder:self];
  +            if (widget->eventFilterObject()) {
  +                const_cast<QObject *>(widget->eventFilterObject())->eventFilter(widget, &event);
  +                [KWQKHTMLPart::bridgeForWidget(widget) formControlIsResigningFirstResponder:self];
  +            }
           }
       }
       return resign;
  
  
  
  1.64      +8 -4      WebCore/kwq/KWQListBox.mm
  
  Index: KWQListBox.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQListBox.mm,v
  retrieving revision 1.63
  retrieving revision 1.64
  diff -u -r1.63 -r1.64
  --- KWQListBox.mm	25 Oct 2005 21:14:46 -0000	1.63
  +++ KWQListBox.mm	28 Oct 2005 17:35:43 -0000	1.64
  @@ -589,11 +589,12 @@
               if (layer)
                   layer->scrollRectToVisible(widget->absoluteBoundingBoxRect());
           }        
  -    [self _KWQ_setKeyboardFocusRingNeedsDisplay];
  +        [self _KWQ_setKeyboardFocusRingNeedsDisplay];
   
           if (_box) {
               QFocusEvent event(QEvent::FocusIn);
  -            const_cast<QObject *>(_box->eventFilterObject())->eventFilter(_box, &event);
  +            if (_box->eventFilterObject())
  +                const_cast<QObject *>(_box->eventFilterObject())->eventFilter(_box, &event);
           }
       }
   
  @@ -605,8 +606,11 @@
       BOOL resign = [super resignFirstResponder];
       if (resign && _box) {
           QFocusEvent event(QEvent::FocusOut);
  -        const_cast<QObject *>(_box->eventFilterObject())->eventFilter(_box, &event);
  -        [KWQKHTMLPart::bridgeForWidget(_box) formControlIsResigningFirstResponder:self];
  +
  +        if (_box->eventFilterObject()) {
  +            const_cast<QObject *>(_box->eventFilterObject())->eventFilter(_box, &event);
  +            [KWQKHTMLPart::bridgeForWidget(_box) formControlIsResigningFirstResponder:self];
  +        }
       }
       return resign;
   }
  
  
  
  1.97      +6 -3      WebCore/kwq/KWQTextArea.mm
  
  Index: KWQTextArea.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQTextArea.mm,v
  retrieving revision 1.96
  retrieving revision 1.97
  diff -u -r1.96 -r1.97
  --- KWQTextArea.mm	25 Oct 2005 21:14:49 -0000	1.96
  +++ KWQTextArea.mm	28 Oct 2005 17:35:43 -0000	1.97
  @@ -972,7 +972,8 @@
   	[self _KWQ_setKeyboardFocusRingNeedsDisplay];
           if (widget) {
               QFocusEvent event(QEvent::FocusIn);
  -            const_cast<QObject *>(widget->eventFilterObject())->eventFilter(widget, &event);
  +            if (widget->eventFilterObject())
  +                const_cast<QObject *>(widget->eventFilterObject())->eventFilter(widget, &event);
           }
       }
   
  @@ -992,8 +993,10 @@
   
           if (widget) {
               QFocusEvent event(QEvent::FocusOut);
  -            const_cast<QObject *>(widget->eventFilterObject())->eventFilter(widget, &event);
  -            [KWQKHTMLPart::bridgeForWidget(widget) formControlIsResigningFirstResponder:self];
  +            if (widget->eventFilterObject()) {
  +                const_cast<QObject *>(widget->eventFilterObject())->eventFilter(widget, &event);
  +                [KWQKHTMLPart::bridgeForWidget(widget) formControlIsResigningFirstResponder:self];
  +            }
           }        
       }
   
  
  
  
  1.94      +5 -3      WebCore/kwq/KWQTextField.mm
  
  Index: KWQTextField.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQTextField.mm,v
  retrieving revision 1.93
  retrieving revision 1.94
  diff -u -r1.93 -r1.94
  --- KWQTextField.mm	25 Oct 2005 21:14:50 -0000	1.93
  +++ KWQTextField.mm	28 Oct 2005 17:35:43 -0000	1.94
  @@ -406,7 +406,8 @@
           
           if (widget) {
               QFocusEvent event(QEvent::FocusIn);
  -            const_cast<QObject *>(widget->eventFilterObject())->eventFilter(widget, &event);
  +            if (widget->eventFilterObject())
  +                const_cast<QObject *>(widget->eventFilterObject())->eventFilter(widget, &event);
           }
           
   	// Sending the onFocus event above, may have resulted in a blur() - if this
  @@ -425,9 +426,10 @@
           
           if (widget) {
               QFocusEvent event(QEvent::FocusOut);
  -            const_cast<QObject *>(widget->eventFilterObject())->eventFilter(widget, &event);
  -            if (widget)
  +            if (widget->eventFilterObject()) {
  +                const_cast<QObject *>(widget->eventFilterObject())->eventFilter(widget, &event);
                   [KWQKHTMLPart::bridgeForWidget(widget) formControlIsResigningFirstResponder:field];
  +            }
           }
       }
   }
  
  
  
  1.422     +1 -1      WebCore/kwq/WebCoreBridge.mm
  
  Index: WebCoreBridge.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/WebCoreBridge.mm,v
  retrieving revision 1.421
  retrieving revision 1.422
  diff -u -r1.421 -r1.422
  --- WebCoreBridge.mm	25 Oct 2005 21:14:51 -0000	1.421
  +++ WebCoreBridge.mm	28 Oct 2005 17:35:43 -0000	1.422
  @@ -911,7 +911,7 @@
       if ([view conformsToProtocol:@protocol(KWQWidgetHolder)]) {
           NSView <KWQWidgetHolder> *widgetHolder = view;
           QWidget *widget = [widgetHolder widget];
  -        if (widget != nil) {
  +        if (widget != nil && widget->eventFilterObject() != nil) {
               NodeImpl *node = static_cast<const RenderWidget *>(widget->eventFilterObject())->element();
               return [DOMElement _elementWithImpl:static_cast<ElementImpl *>(node)];
           }
  
  
  



More information about the webkit-changes mailing list