Bug 841882 - Revert bug 597525.

This commit is contained in:
Mounir Lamouri 2013-03-25 19:35:55 +00:00
Родитель bb1294b14d
Коммит a5b100dbdf
7 изменённых файлов: 37 добавлений и 3 удалений

Просмотреть файл

@ -18,8 +18,8 @@ class nsTextControlFrame;
// IID for the nsITextControl interface
#define NS_ITEXTCONTROLELEMENT_IID \
{ 0x3558afa1, 0x6136, 0x4421, \
{ 0xbd, 0xdc, 0x2c, 0x9d, 0x5f, 0xc1, 0xfb, 0x91 } }
{ 0x3dd53b59, 0x9d8f, 0x40a3, \
{ 0x81, 0xd7, 0xb3, 0x43, 0xa0, 0x51, 0xfc, 0xb5 } }
/**
* This interface is used for the text control frame to get the editor and
@ -76,6 +76,11 @@ public:
*/
NS_IMETHOD_(int32_t) GetRows() = 0;
/**
* Get the default value of the text control
*/
NS_IMETHOD_(void) GetDefaultValueFromContent(nsAString& aValue) = 0;
/**
* Return true if the value of the control has been changed.
*/

Просмотреть файл

@ -353,6 +353,9 @@ HTMLTextAreaElement::SetValueChanged(bool aValueChanged)
bool previousValue = mValueChanged;
mValueChanged = aValueChanged;
if (!aValueChanged && !mState.IsEmpty()) {
mState.EmptyValue();
}
if (mValueChanged != previousValue) {
UpdateState(true);
@ -1379,6 +1382,12 @@ HTMLTextAreaElement::GetRows()
return DEFAULT_ROWS_TEXTAREA;
}
NS_IMETHODIMP_(void)
nsHTMLTextAreaElement::GetDefaultValueFromContent(nsAString& aValue)
{
GetDefaultValue(aValue);
}
NS_IMETHODIMP_(bool)
HTMLTextAreaElement::ValueChanged() const
{

Просмотреть файл

@ -87,6 +87,7 @@ public:
NS_IMETHOD_(int32_t) GetCols();
NS_IMETHOD_(int32_t) GetWrapCols();
NS_IMETHOD_(int32_t) GetRows();
NS_IMETHOD_(void) GetDefaultValueFromContent(nsAString& aValue);
NS_IMETHOD_(bool) ValueChanged() const;
NS_IMETHOD_(void) GetTextEditorValue(nsAString& aValue, bool aIgnoreWrap) const;
NS_IMETHOD_(nsIEditor*) GetTextEditor();

Просмотреть файл

@ -5557,6 +5557,20 @@ nsHTMLInputElement::GetRows()
return DEFAULT_ROWS;
}
NS_IMETHODIMP_(void)
nsHTMLInputElement::GetDefaultValueFromContent(nsAString& aValue)
{
nsTextEditorState *state = GetEditorState();
if (state) {
GetDefaultValue(aValue);
// This is called by the frame to show the value.
// We have to sanitize it when needed.
if (!mParserCreating) {
SanitizeValue(aValue);
}
}
}
NS_IMETHODIMP_(bool)
nsHTMLInputElement::ValueChanged() const
{

Просмотреть файл

@ -147,6 +147,7 @@ public:
NS_IMETHOD_(int32_t) GetCols();
NS_IMETHOD_(int32_t) GetWrapCols();
NS_IMETHOD_(int32_t) GetRows();
NS_IMETHOD_(void) GetDefaultValueFromContent(nsAString& aValue);
NS_IMETHOD_(bool) ValueChanged() const;
NS_IMETHOD_(void) GetTextEditorValue(nsAString& aValue, bool aIgnoreWrap) const;
NS_IMETHOD_(nsIEditor*) GetTextEditor();

Просмотреть файл

@ -1747,7 +1747,9 @@ nsTextEditorState::GetValue(nsAString& aValue, bool aIgnoreWrap) const
mCachedValue.Truncate();
}
} else {
if (mValue) {
if (!mTextCtrlElement->ValueChanged() || !mValue) {
mTextCtrlElement->GetDefaultValueFromContent(aValue);
} else {
aValue = NS_ConvertUTF8toUTF16(*mValue);
}
}

Просмотреть файл

@ -137,6 +137,8 @@ public:
void SetValue(const nsAString& aValue, bool aUserInput,
bool aSetValueAsChanged);
void GetValue(nsAString& aValue, bool aIgnoreWrap) const;
void EmptyValue() { if (mValue) mValue->Truncate(); }
bool IsEmpty() const { return mValue ? mValue->IsEmpty() : true; }
nsresult CreatePlaceholderNode();