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

Timothy thatcher at opensource.apple.com
Thu Dec 1 15:55:45 PST 2005


thatcher    05/12/01 15:55:45

  Modified:    .        Tag: Safari-1-3-branch ChangeLog
               kwq      Tag: Safari-1-3-branch KWQButton.mm KWQComboBox.mm
                        KWQListBox.mm KWQSlider.mm KWQTextArea.mm
                        KWQTextField.mm WebCoreBridge.mm
  Log:
          Merged fix from TOT to Safari-1-3-branch
  
      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/KWQButton.mm:
          (-[KWQButton becomeFirstResponder]): Added nil check.
          (-[KWQButton resignFirstResponder]): Added nil check.
          * kwq/KWQSlider.mm:
          (-[KWQSlider becomeFirstResponder]): Added nil check.
          (-[KWQSlider resignFirstResponder]): Added nil check.
          * 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.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.335.2.41 +37 -0     WebCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/WebCore/ChangeLog,v
  retrieving revision 1.335.2.40
  retrieving revision 1.335.2.41
  diff -u -r1.335.2.40 -r1.335.2.41
  --- ChangeLog	1 Dec 2005 23:16:32 -0000	1.335.2.40
  +++ ChangeLog	1 Dec 2005 23:55:31 -0000	1.335.2.41
  @@ -2,6 +2,43 @@
   
           Merged fix from TOT to Safari-1-3-branch
   
  +    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/KWQButton.mm:
  +        (-[KWQButton becomeFirstResponder]): Added nil check.
  +        (-[KWQButton resignFirstResponder]): Added nil check.
  +        * kwq/KWQSlider.mm:
  +        (-[KWQSlider becomeFirstResponder]): Added nil check.
  +        (-[KWQSlider resignFirstResponder]): Added nil check.
  +        * 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-12-01  Timothy Hatcher  <timothy at apple.com>
  +
  +        Merged fix from TOT to Safari-1-3-branch
  +
       2005-07-30  Darin Adler  <darin at apple.com>
   
           Reviewed by me, change by Dave Hyatt.
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.40.6.3  +4 -2      WebCore/kwq/Attic/KWQButton.mm
  
  Index: KWQButton.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/Attic/KWQButton.mm,v
  retrieving revision 1.40.6.2
  retrieving revision 1.40.6.3
  diff -u -r1.40.6.2 -r1.40.6.3
  --- KWQButton.mm	14 Nov 2005 19:32:03 -0000	1.40.6.2
  +++ KWQButton.mm	1 Dec 2005 23:55:38 -0000	1.40.6.3
  @@ -132,7 +132,8 @@
           }
           if (button) {
               QFocusEvent event(QEvent::FocusIn);
  -            const_cast<QObject *>(button->eventFilterObject())->eventFilter(button, &event);
  +            if (button->eventFilterObject())
  +                const_cast<QObject *>(button->eventFilterObject())->eventFilter(button, &event);
           }
       }
       return become;
  @@ -143,7 +144,8 @@
       BOOL resign = [super resignFirstResponder];
       if (resign && button) {
           QFocusEvent event(QEvent::FocusOut);
  -        const_cast<QObject *>(button->eventFilterObject())->eventFilter(button, &event);
  +        if (button->eventFilterObject())
  +            const_cast<QObject *>(button->eventFilterObject())->eventFilter(button, &event);
       }
       return resign;
   }
  
  
  
  1.59.8.4  +4 -2      WebCore/kwq/KWQComboBox.mm
  
  Index: KWQComboBox.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQComboBox.mm,v
  retrieving revision 1.59.8.3
  retrieving revision 1.59.8.4
  diff -u -r1.59.8.3 -r1.59.8.4
  --- KWQComboBox.mm	17 Nov 2005 18:32:16 -0000	1.59.8.3
  +++ KWQComboBox.mm	1 Dec 2005 23:55:38 -0000	1.59.8.4
  @@ -478,7 +478,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;
  @@ -491,7 +492,8 @@
           QWidget *widget = [self widget];
           if (widget) {
               QFocusEvent event(QEvent::FocusOut);
  -            const_cast<QObject *>(widget->eventFilterObject())->eventFilter(widget, &event);
  +            if (widget->eventFilterObject())
  +                const_cast<QObject *>(widget->eventFilterObject())->eventFilter(widget, &event);
           }
       }
       return resign;
  
  
  
  1.51.6.4  +4 -2      WebCore/kwq/KWQListBox.mm
  
  Index: KWQListBox.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQListBox.mm,v
  retrieving revision 1.51.6.3
  retrieving revision 1.51.6.4
  diff -u -r1.51.6.3 -r1.51.6.4
  --- KWQListBox.mm	17 Nov 2005 18:32:16 -0000	1.51.6.3
  +++ KWQListBox.mm	1 Dec 2005 23:55:39 -0000	1.51.6.4
  @@ -477,7 +477,8 @@
   
           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);
           }
       }
   
  @@ -489,7 +490,8 @@
       BOOL resign = [super resignFirstResponder];
       if (resign && _box) {
           QFocusEvent event(QEvent::FocusOut);
  -        const_cast<QObject *>(_box->eventFilterObject())->eventFilter(_box, &event);
  +        if (_box->eventFilterObject())
  +            const_cast<QObject *>(_box->eventFilterObject())->eventFilter(_box, &event);
       }
       return resign;
   }
  
  
  
  1.8.6.2   +4 -2      WebCore/kwq/KWQSlider.mm
  
  Index: KWQSlider.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQSlider.mm,v
  retrieving revision 1.8.6.1
  retrieving revision 1.8.6.2
  diff -u -r1.8.6.1 -r1.8.6.2
  --- KWQSlider.mm	12 Nov 2005 01:57:44 -0000	1.8.6.1
  +++ KWQSlider.mm	1 Dec 2005 23:55:39 -0000	1.8.6.2
  @@ -110,7 +110,8 @@
   
           if (slider) {
               QFocusEvent event(QEvent::FocusIn);
  -            const_cast<QObject *>(slider->eventFilterObject())->eventFilter(slider, &event);
  +            if (slider->eventFilterObject())
  +                const_cast<QObject *>(slider->eventFilterObject())->eventFilter(slider, &event);
           }
       }
       return become;
  @@ -121,7 +122,8 @@
       BOOL resign = [super resignFirstResponder];
       if (resign && slider) {
           QFocusEvent event(QEvent::FocusOut);
  -        const_cast<QObject *>(slider->eventFilterObject())->eventFilter(slider, &event);
  +        if (slider->eventFilterObject())
  +            const_cast<QObject *>(slider->eventFilterObject())->eventFilter(slider, &event);
       }
       return resign;
   }
  
  
  
  1.72.6.6  +4 -2      WebCore/kwq/KWQTextArea.mm
  
  Index: KWQTextArea.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQTextArea.mm,v
  retrieving revision 1.72.6.5
  retrieving revision 1.72.6.6
  diff -u -r1.72.6.5 -r1.72.6.6
  --- KWQTextArea.mm	12 Nov 2005 01:57:45 -0000	1.72.6.5
  +++ KWQTextArea.mm	1 Dec 2005 23:55:39 -0000	1.72.6.6
  @@ -756,7 +756,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);
           }
       }
   
  @@ -772,7 +773,8 @@
   
           if (widget) {
               QFocusEvent event(QEvent::FocusOut);
  -            const_cast<QObject *>(widget->eventFilterObject())->eventFilter(widget, &event);
  +            if (widget->eventFilterObject())
  +                const_cast<QObject *>(widget->eventFilterObject())->eventFilter(widget, &event);
           }
       }
   
  
  
  
  1.77.6.3  +4 -2      WebCore/kwq/KWQTextField.mm
  
  Index: KWQTextField.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQTextField.mm,v
  retrieving revision 1.77.6.2
  retrieving revision 1.77.6.3
  diff -u -r1.77.6.2 -r1.77.6.3
  --- KWQTextField.mm	12 Nov 2005 01:57:45 -0000	1.77.6.2
  +++ KWQTextField.mm	1 Dec 2005 23:55:40 -0000	1.77.6.3
  @@ -423,7 +423,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
  @@ -442,7 +443,8 @@
           
           if (widget) {
               QFocusEvent event(QEvent::FocusOut);
  -            const_cast<QObject *>(widget->eventFilterObject())->eventFilter(widget, &event);
  +            if (widget->eventFilterObject())
  +                const_cast<QObject *>(widget->eventFilterObject())->eventFilter(widget, &event);
           }
       }
   }
  
  
  
  1.383.6.7 +1 -1      WebCore/kwq/WebCoreBridge.mm
  
  Index: WebCoreBridge.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/WebCoreBridge.mm,v
  retrieving revision 1.383.6.6
  retrieving revision 1.383.6.7
  diff -u -r1.383.6.6 -r1.383.6.7
  --- WebCoreBridge.mm	28 Nov 2005 18:49:32 -0000	1.383.6.6
  +++ WebCoreBridge.mm	1 Dec 2005 23:55:40 -0000	1.383.6.7
  @@ -891,7 +891,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