Reviewed by Geoff.
Test for <rdar://problem/
4895716> REGRESSION: Pressing return key in search field doesn't begin search
* fast/events/onsearch-enter-expected.txt: Added.
* fast/events/onsearch-enter.html: Added.
WebCore:
Reviewed by Geoff.
- Fix for <rdar://problem/
4895716> REGRESSION: Pressing return key in search field doesn't begin search
Test: fast/events/onsearch-enter.html
* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::defaultEventHandler): Calls onSearch when handling "Enter". Also removed
special case for AppKit search fields, so now the enter event is considered handled here.
(WebCore::HTMLInputElement::onSearch): Added. Dispatches search event.
* html/HTMLInputElement.h: Added onSearch.
* rendering/RenderTextControl.cpp: (WebCore::RenderTextControl::onSearch): Calls onSearch on the node.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@18384
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+l2006-12-21 Adele Peterson <adele@apple.com>
+
+ Reviewed by Geoff.
+
+ Test for <rdar://problem/4895716> REGRESSION: Pressing return key in search field doesn't begin search
+
+ * fast/events/onsearch-enter-expected.txt: Added.
+ * fast/events/onsearch-enter.html: Added.
+
2006-12-21 Geoffrey Garen <ggaren@apple.com>
Reviewed by Brady Eidson.
--- /dev/null
+This tests that onSearch fires correctly.
+
+Test Passed
+
--- /dev/null
+<html>
+ <head>
+ <script>
+ function test()
+ {
+ var sf = document.getElementById('sf');
+ sf.focus();
+ var enterEvent = document.createEvent("KeyboardEvents");
+ enterEvent.initKeyboardEvent("keypress", true, false, window, "Enter", 0, false, false, false, false, false);
+ sf.dispatchEvent(enterEvent);
+ if (window.layoutTestController)
+ layoutTestController.dumpAsText();
+ }
+ function log(msg)
+ {
+ var res = document.getElementById('res');
+ res.innerHTML = res.innerHTML + msg + "<br>";
+ }
+ </script>
+ </head>
+ <body onload="test()">
+ This tests that onSearch fires correctly.<br>
+ <input type="search" id="sf" onSearch="log('Test Passed');"></input>
+ <div id="res"></div>
+ </body>
+</html>
+2006-12-21 Adele Peterson <adele@apple.com>
+
+ Reviewed by Geoff.
+
+ - Fix for <rdar://problem/4895716> REGRESSION: Pressing return key in search field doesn't begin search
+
+ Test: fast/events/onsearch-enter.html
+
+ * html/HTMLInputElement.cpp:
+ (WebCore::HTMLInputElement::defaultEventHandler): Calls onSearch when handling "Enter". Also removed
+ special case for AppKit search fields, so now the enter event is considered handled here.
+ (WebCore::HTMLInputElement::onSearch): Added. Dispatches search event.
+ * html/HTMLInputElement.h: Added onSearch.
+ * rendering/RenderTextControl.cpp: (WebCore::RenderTextControl::onSearch): Calls onSearch on the node.
+
2006-12-21 Geoffrey Garen <ggaren@apple.com>
Reviewed by Brady Eidson.
dispatchSimulatedClick(evt);
evt->setDefaultHandled();
} else if (clickDefaultFormButton) {
- if (isSearchField())
+ if (isSearchField()) {
addSearchResult();
+ onSearch();
+ }
blur();
// Form may never have been present, or may have been destroyed by the blur event.
- if (form()) {
+ if (form())
form()->submitClick(evt);
- evt->setDefaultHandled();
- } else if (inputType() != SEARCH) {
- evt->setDefaultHandled();
- }
+ evt->setDefaultHandled();
}
}
if (renderer())
static_cast<RenderTextControl*>(renderer())->addSearchResult();
}
+
+void HTMLInputElement::onSearch()
+{
+ ASSERT(isSearchField());
+ dispatchHTMLEvent(searchEvent, true, false);
+}
} // namespace
void cacheSelection(int s, int e) { cachedSelStart = s; cachedSelEnd = e; };
void addSearchResult();
+ void onSearch();
protected:
AtomicString m_name;
void RenderTextControl::onSearch() const
{
- static_cast<EventTargetNode*>(node())->dispatchHTMLEvent(searchEvent, true, false);
+ static_cast<HTMLInputElement*>(node())->onSearch();
}
void RenderTextControl::showPopup()