From 81bc750723a18f21cd17d1b173cd2a4dda9cea6e Mon Sep 17 00:00:00 2001 From: Ben Murdoch Date: Tue, 24 May 2011 11:24:40 +0100 Subject: Merge WebKit at r80534: Intial merge by Git Change-Id: Ia7a83357124c9e1cdb1debf55d9661ec0bd09a61 --- Source/WebCore/wml/WMLInputElement.cpp | 20 +++++++++++++------- Source/WebCore/wml/WMLInputElement.h | 5 +++++ 2 files changed, 18 insertions(+), 7 deletions(-) (limited to 'Source/WebCore/wml') diff --git a/Source/WebCore/wml/WMLInputElement.cpp b/Source/WebCore/wml/WMLInputElement.cpp index 687a387..80e4e70 100644 --- a/Source/WebCore/wml/WMLInputElement.cpp +++ b/Source/WebCore/wml/WMLInputElement.cpp @@ -41,6 +41,7 @@ WMLInputElement::WMLInputElement(const QualifiedName& tagName, Document* doc) : WMLFormControlElement(tagName, doc) , m_isPasswordField(false) , m_isEmptyOk(false) + , m_wasChangedSinceLastChangeEvent(false) , m_numOfCharsAllowedByMask(0) { } @@ -173,6 +174,16 @@ void WMLInputElement::setValueFromRenderer(const String& value) InputElement::setValueFromRenderer(m_data, this, this, value); } +bool WMLInputElement::wasChangedSinceLastFormControlChangeEvent() const +{ + return m_wasChangedSinceLastChangeEvent; +} + +void WMLInputElement::setChangedSinceLastFormControlChangeEvent(bool changed) +{ + m_wasChangedSinceLastChangeEvent = changed; +} + bool WMLInputElement::saveFormControlState(String& result) const { if (m_isPasswordField) @@ -296,14 +307,9 @@ void WMLInputElement::defaultEventHandler(Event* evt) if (clickDefaultFormButton) { // Fire onChange for text fields. - RenderObject* r = renderer(); - if (r && toRenderTextControl(r)->wasChangedSinceLastChangeEvent()) { + if (wasChangedSinceLastChangeEvent()) { + setChangedSinceLastChangeEvent(false); dispatchEvent(Event::create(eventNames().changeEvent, true, false)); - - // Refetch the renderer since arbitrary JS code run during onchange can do anything, including destroying it. - r = renderer(); - if (r) - toRenderTextControl(r)->setChangedSinceLastChangeEvent(false); } evt->setDefaultHandled(); diff --git a/Source/WebCore/wml/WMLInputElement.h b/Source/WebCore/wml/WMLInputElement.h index 6c66410..558147a 100644 --- a/Source/WebCore/wml/WMLInputElement.h +++ b/Source/WebCore/wml/WMLInputElement.h @@ -64,8 +64,12 @@ public: virtual void setValue(const String&, bool sendChangeEvent = false); virtual void setValueForUser(const String&); virtual String visibleValue() const { return value(); } + virtual String convertFromVisibleValue(const String& value) const { return value; } virtual void setValueFromRenderer(const String&); + virtual bool wasChangedSinceLastFormControlChangeEvent() const; + virtual void setChangedSinceLastFormControlChangeEvent(bool); + virtual bool saveFormControlState(String& value) const; virtual void restoreFormControlState(const String&); @@ -109,6 +113,7 @@ private: InputElementData m_data; bool m_isPasswordField; bool m_isEmptyOk; + bool m_wasChangedSinceLastChangeEvent; String m_formatMask; unsigned m_numOfCharsAllowedByMask; }; -- cgit v1.1