#399: M1352799 maxlength is now dynamic

This commit is contained in:
Cameron Kaiser 2017-08-15 20:09:27 -07:00
parent 3436d24318
commit e5a4aa65bf
2 changed files with 15 additions and 18 deletions

View File

@ -1384,19 +1384,16 @@ nsTextEditorState::PrepareEditor(const nsAString *aValue)
} }
} }
if (shouldInitializeEditor) { // Initialize the plaintext editor
// Initialize the plaintext editor nsCOMPtr<nsIPlaintextEditor> textEditor = do_QueryInterface(newEditor);
nsCOMPtr<nsIPlaintextEditor> textEditor(do_QueryInterface(newEditor)); if (textEditor) {
if (textEditor) { if (shouldInitializeEditor) {
// Set up wrapping // Set up wrapping
textEditor->SetWrapColumn(GetWrapCols()); textEditor->SetWrapColumn(GetWrapCols());
// Set max text field length
int32_t maxLength;
if (GetMaxLength(&maxLength)) {
textEditor->SetMaxTextLength(maxLength);
}
} }
// Set max text field length
textEditor->SetMaxTextLength(GetMaxLength());
} }
nsCOMPtr<nsIContent> content = do_QueryInterface(mTextCtrlElement); nsCOMPtr<nsIContent> content = do_QueryInterface(mTextCtrlElement);
@ -1840,22 +1837,22 @@ be called if @placeholder is the empty string when trimmed from line breaks");
return NS_OK; return NS_OK;
} }
bool int32_t
nsTextEditorState::GetMaxLength(int32_t* aMaxLength) nsTextEditorState::GetMaxLength()
{ {
nsCOMPtr<nsIContent> content = do_QueryInterface(mTextCtrlElement); nsCOMPtr<nsIContent> content = do_QueryInterface(mTextCtrlElement);
nsGenericHTMLElement* element = nsGenericHTMLElement* element =
nsGenericHTMLElement::FromContentOrNull(content); nsGenericHTMLElement::FromContentOrNull(content);
NS_ENSURE_TRUE(element, false); if (MOZ_UNLIKELY(!element)) {
return -1;
}
const nsAttrValue* attr = element->GetParsedAttr(nsGkAtoms::maxlength); const nsAttrValue* attr = element->GetParsedAttr(nsGkAtoms::maxlength);
if (attr && attr->Type() == nsAttrValue::eInteger) { if (attr && attr->Type() == nsAttrValue::eInteger) {
*aMaxLength = attr->GetIntegerValue(); return attr->GetIntegerValue();
return true;
} }
return false; return -1;
} }
void void

View File

@ -211,7 +211,7 @@ public:
* @param aMaxLength the value of the max length attr * @param aMaxLength the value of the max length attr
* @returns false if attr not defined * @returns false if attr not defined
*/ */
bool GetMaxLength(int32_t* aMaxLength); int32_t GetMaxLength();
void ClearValueCache() { mCachedValue.Truncate(); } void ClearValueCache() { mCachedValue.Truncate(); }