[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