diff --git a/content/html/content/src/nsGenericHTMLElement.cpp b/content/html/content/src/nsGenericHTMLElement.cpp
index 7937a7dc235..ebb8bd91fa3 100644
--- a/content/html/content/src/nsGenericHTMLElement.cpp
+++ b/content/html/content/src/nsGenericHTMLElement.cpp
@@ -67,6 +67,7 @@
#include "nsDOMCSSDeclaration.h"
#include "prprf.h"
#include "prmem.h"
+#include "nsIFormControlFrame.h"
// XXX todo: add in missing out-of-memory checks
NS_DEFINE_IID(kIDOMHTMLElementIID, NS_IDOMHTMLELEMENT_IID);
@@ -83,6 +84,7 @@ static NS_DEFINE_IID(kIDOMCSSStyleDeclarationIID, NS_IDOMCSSSTYLEDECLARATION_IID
static NS_DEFINE_IID(kIDOMDocumentIID, NS_IDOMNODE_IID);
static NS_DEFINE_IID(kIDOMDocumentFragmentIID, NS_IDOMDOCUMENTFRAGMENT_IID);
static NS_DEFINE_IID(kIHTMLContentContainerIID, NS_IHTMLCONTENTCONTAINER_IID);
+static NS_DEFINE_IID(kIFormControlFrameIID, NS_IFORMCONTROLFRAME_IID);
//----------------------------------------------------------------------
@@ -1407,6 +1409,31 @@ nsGenericHTMLElement::ColorToString(const nsHTMLValue& aValue,
return PR_FALSE;
}
+// XXX This creates a dependency between content and frames
+nsresult
+nsGenericHTMLElement::GetPrimaryFrame(nsIHTMLContent* aContent,
+ nsIFormControlFrame *&aFormControlFrame)
+{
+ nsIDocument* doc = nsnull;
+ nsresult res;
+ // Get the document
+ if (NS_OK == aContent->GetDocument(doc)) {
+ // Get presentation shell 0
+ nsIPresShell* presShell = doc->GetShellAt(0);
+ if (nsnull != presShell) {
+ nsIFrame *frame = nsnull;
+ presShell->GetPrimaryFrameFor(aContent, frame);
+ if (nsnull != frame) {
+ res = frame->QueryInterface(kIFormControlFrameIID, (void**)&aFormControlFrame);
+ }
+ NS_RELEASE(presShell);
+ }
+ NS_RELEASE(doc);
+ }
+
+ return res;
+}
+
// XXX check all mappings against ebina's usage
static nsGenericHTMLElement::EnumTable kAlignTable[] = {
{ "left", NS_STYLE_TEXT_ALIGN_LEFT },
diff --git a/content/html/content/src/nsGenericHTMLElement.h b/content/html/content/src/nsGenericHTMLElement.h
index 02972e377c1..f24c1199fc2 100644
--- a/content/html/content/src/nsGenericHTMLElement.h
+++ b/content/html/content/src/nsGenericHTMLElement.h
@@ -46,6 +46,7 @@ class nsChildContentList;
class nsDOMCSSDeclaration;
class nsIDOMCSSStyleDeclaration;
class nsIURL;
+class nsIFormControlFrame;
class nsGenericHTMLElement : public nsGenericElement {
public:
@@ -237,6 +238,10 @@ public:
const nsIAtom* aAttribute,
PRInt32* aHint);
+ //XXX This creates a dependency between content and frames
+ static nsresult GetPrimaryFrame(nsIHTMLContent* aContent,
+ nsIFormControlFrame *&aFormControlFrame);
+
nsIHTMLAttributes* mAttributes;
};
diff --git a/content/html/content/src/nsHTMLInputElement.cpp b/content/html/content/src/nsHTMLInputElement.cpp
index ed3220b5f6e..10db0cf9103 100644
--- a/content/html/content/src/nsHTMLInputElement.cpp
+++ b/content/html/content/src/nsHTMLInputElement.cpp
@@ -139,9 +139,6 @@ protected:
nsIForm* mForm;
PRInt32 mType;
- // Return the primary frame associated with this content
- nsresult GetPrimaryFrame(nsIFormControlFrame *&aFormControlFrame);
-
PRBool IsImage() const {
nsAutoString tmp;
mInner.GetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::type, tmp);
@@ -324,7 +321,7 @@ nsHTMLInputElement::GetValue(nsString& aValue)
GetType(&type);
if (NS_FORM_INPUT_TEXT == type || NS_FORM_INPUT_PASSWORD == type) {
nsIFormControlFrame* formControlFrame = nsnull;
- if (NS_OK == GetPrimaryFrame(formControlFrame)) {
+ if (NS_OK == nsGenericHTMLElement::GetPrimaryFrame(this, formControlFrame)) {
formControlFrame->GetProperty(nsHTMLAtoms::value, aValue);
NS_RELEASE(formControlFrame);
return NS_OK;
@@ -341,7 +338,7 @@ nsHTMLInputElement::SetValue(const nsString& aValue)
GetType(&type);
if (NS_FORM_INPUT_TEXT == type) {
nsIFormControlFrame* formControlFrame = nsnull;
- if (NS_OK == GetPrimaryFrame(formControlFrame)) {
+ if (NS_OK == nsGenericHTMLElement::GetPrimaryFrame(this, formControlFrame)) {
formControlFrame->SetProperty(nsHTMLAtoms::value, aValue);
NS_RELEASE(formControlFrame);
}
@@ -353,7 +350,7 @@ NS_IMETHODIMP
nsHTMLInputElement::GetChecked(PRBool* aValue)
{
nsIFormControlFrame* formControlFrame = nsnull;
- if (NS_OK == GetPrimaryFrame(formControlFrame)) {
+ if (NS_OK == nsGenericHTMLElement::GetPrimaryFrame(this, formControlFrame)) {
if (nsnull != formControlFrame) {
nsString value("0");
formControlFrame->GetProperty(nsHTMLAtoms::checked, value);
@@ -373,7 +370,7 @@ NS_IMETHODIMP
nsHTMLInputElement::SetChecked(PRBool aValue)
{
nsIFormControlFrame* formControlFrame = nsnull;
- if (NS_OK == GetPrimaryFrame(formControlFrame)) {
+ if (NS_OK == nsGenericHTMLElement::GetPrimaryFrame(this, formControlFrame)) {
if (PR_TRUE == aValue) {
formControlFrame->SetProperty(nsHTMLAtoms::checked, "1");
}
@@ -679,26 +676,4 @@ nsHTMLInputElement::GetStyleHintForAttributeChange(
return NS_OK;
}
-nsresult nsHTMLInputElement::GetPrimaryFrame(nsIFormControlFrame *&aFormControlFrame)
-{
- nsIDocument* doc = nsnull;
- nsresult res = NS_NOINTERFACE;
- // Get the document
- if (NS_OK == GetDocument(doc)) {
- // Get presentation shell 0
- nsIPresShell* presShell = doc->GetShellAt(0);
- if (nsnull != presShell) {
- nsIFrame *frame = nsnull;
- presShell->GetPrimaryFrameFor(this, frame);
- if (nsnull != frame) {
- res = frame->QueryInterface(kIFormControlFrameIID, (void**)&aFormControlFrame);
- }
- NS_RELEASE(presShell);
- }
- NS_RELEASE(doc);
- }
-
- return res;
-}
-
diff --git a/content/html/content/src/nsHTMLTextAreaElement.cpp b/content/html/content/src/nsHTMLTextAreaElement.cpp
index 812b5abf90e..2a36887132a 100644
--- a/content/html/content/src/nsHTMLTextAreaElement.cpp
+++ b/content/html/content/src/nsHTMLTextAreaElement.cpp
@@ -32,6 +32,7 @@
#include "nsIWidget.h"
#include "nsITextAreaWidget.h"
#include "nsIHTMLAttributes.h"
+#include "nsIFormControlFrame.h"
static NS_DEFINE_IID(kIDOMHTMLTextAreaElementIID, NS_IDOMHTMLTEXTAREAELEMENT_IID);
static NS_DEFINE_IID(kIDOMHTMLFormElementIID, NS_IDOMHTMLFORMELEMENT_IID);
@@ -265,39 +266,32 @@ nsHTMLTextAreaElement::GetType(nsString& aType)
NS_IMETHODIMP
nsHTMLTextAreaElement::GetValue(nsString& aValue)
{
- if (nsnull != mWidget) {
- nsITextAreaWidget* text = nsnull;
- if (NS_OK == mWidget->QueryInterface(kITextAreaWidgetIID,(void**)&text)) {
- PRUint32 size;
- text->GetText(aValue,0,size);
- NS_RELEASE(text);
+ nsIFormControlFrame* formControlFrame = nsnull;
+ if (NS_OK == nsGenericHTMLElement::GetPrimaryFrame(this, formControlFrame)) {
+ formControlFrame->GetProperty(nsHTMLAtoms::value, aValue);
+ NS_RELEASE(formControlFrame);
return NS_OK;
- }
- }
-
- return mInner.GetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::value, aValue);
+ }
+ //XXX: Should this ASSERT instead of getting the default value here?
+ return mInner.GetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::value, aValue);
}
NS_IMETHODIMP
nsHTMLTextAreaElement::SetValue(const nsString& aValue)
{
- if (nsnull != mWidget) {
- nsITextAreaWidget* text = nsnull;
- if (NS_OK == mWidget->QueryInterface(kITextAreaWidgetIID,(void**)&text)) {
- PRUint32 size;
- text->SetText(aValue,size);
- NS_RELEASE(text);
- }
- }
-
- return mInner.SetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::value, aValue, PR_TRUE);
+ nsIFormControlFrame* formControlFrame = nsnull;
+ if (NS_OK == nsGenericHTMLElement::GetPrimaryFrame(this, formControlFrame)) {
+ formControlFrame->SetProperty(nsHTMLAtoms::value, aValue);
+ NS_RELEASE(formControlFrame);
+ }
+ return NS_OK;
}
NS_IMETHODIMP
nsHTMLTextAreaElement::GetDefaultValue(nsString& aDefaultValue)
{
- mInner.GetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::defaultvalue, aDefaultValue);
+ mInner.GetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::value, aDefaultValue);
return NS_OK;
}
@@ -308,7 +302,6 @@ nsHTMLTextAreaElement::SetDefaultValue(const nsString& aDefaultValue)
static char whitespace[] = " \r\n\t";
nsString value(aDefaultValue);
value.Trim(whitespace, PR_TRUE, PR_FALSE);
- mInner.SetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::defaultvalue, value, PR_TRUE);
mInner.SetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::value, value, PR_TRUE);
return NS_OK;
diff --git a/layout/forms/nsTextControlFrame.cpp b/layout/forms/nsTextControlFrame.cpp
index d37534361f9..dc3150e6260 100644
--- a/layout/forms/nsTextControlFrame.cpp
+++ b/layout/forms/nsTextControlFrame.cpp
@@ -739,11 +739,17 @@ void nsTextControlFrame::GetTextControlFrameState(nsString& aValue)
{
if (nsnull != mWidget) {
nsITextWidget* text = nsnull;
+ nsITextAreaWidget* textArea = nsnull;
+ PRUint32 size = 0;
if (NS_OK == mWidget->QueryInterface(kITextWidgetIID,(void**)&text)) {
- PRUint32 size;
text->GetText(aValue,0,size);
NS_RELEASE(text);
}
+ else if (NS_OK == mWidget->QueryInterface(kITextAreaWidgetIID,
+ (void**)&textArea)) {
+ textArea->GetText(aValue,0, size);
+ NS_RELEASE(textArea);
+ }
}
else {
//XXX: this should return the a local field for GFX-rendered widgets aValue = "";
@@ -754,13 +760,18 @@ void nsTextControlFrame::SetTextControlFrameState(const nsString& aValue)
{
if (nsnull != mWidget) {
nsITextWidget* text = nsnull;
+ nsITextAreaWidget* textArea = nsnull;
+ PRUint32 size = 0;
if (NS_OK == mWidget->QueryInterface(kITextWidgetIID,(void**)&text)) {
- PRUint32 size;
text->SetText(aValue,size);
NS_RELEASE(text);
+ } else if (NS_OK == mWidget->QueryInterface(kITextAreaWidgetIID,
+ (void**)&textArea)) {
+ textArea->SetText(aValue,size);
+ NS_RELEASE(textArea);
}
- }
-}
+ }
+}
NS_IMETHODIMP nsTextControlFrame::SetProperty(nsIAtom* aName, const nsString& aValue)
{
@@ -769,7 +780,6 @@ NS_IMETHODIMP nsTextControlFrame::SetProperty(nsIAtom* aName, const nsString& aV
else {
return nsFormControlFrame::SetProperty(aName, aValue);
}
-
return NS_OK;
}
diff --git a/layout/html/content/src/nsGenericHTMLElement.cpp b/layout/html/content/src/nsGenericHTMLElement.cpp
index 7937a7dc235..ebb8bd91fa3 100644
--- a/layout/html/content/src/nsGenericHTMLElement.cpp
+++ b/layout/html/content/src/nsGenericHTMLElement.cpp
@@ -67,6 +67,7 @@
#include "nsDOMCSSDeclaration.h"
#include "prprf.h"
#include "prmem.h"
+#include "nsIFormControlFrame.h"
// XXX todo: add in missing out-of-memory checks
NS_DEFINE_IID(kIDOMHTMLElementIID, NS_IDOMHTMLELEMENT_IID);
@@ -83,6 +84,7 @@ static NS_DEFINE_IID(kIDOMCSSStyleDeclarationIID, NS_IDOMCSSSTYLEDECLARATION_IID
static NS_DEFINE_IID(kIDOMDocumentIID, NS_IDOMNODE_IID);
static NS_DEFINE_IID(kIDOMDocumentFragmentIID, NS_IDOMDOCUMENTFRAGMENT_IID);
static NS_DEFINE_IID(kIHTMLContentContainerIID, NS_IHTMLCONTENTCONTAINER_IID);
+static NS_DEFINE_IID(kIFormControlFrameIID, NS_IFORMCONTROLFRAME_IID);
//----------------------------------------------------------------------
@@ -1407,6 +1409,31 @@ nsGenericHTMLElement::ColorToString(const nsHTMLValue& aValue,
return PR_FALSE;
}
+// XXX This creates a dependency between content and frames
+nsresult
+nsGenericHTMLElement::GetPrimaryFrame(nsIHTMLContent* aContent,
+ nsIFormControlFrame *&aFormControlFrame)
+{
+ nsIDocument* doc = nsnull;
+ nsresult res;
+ // Get the document
+ if (NS_OK == aContent->GetDocument(doc)) {
+ // Get presentation shell 0
+ nsIPresShell* presShell = doc->GetShellAt(0);
+ if (nsnull != presShell) {
+ nsIFrame *frame = nsnull;
+ presShell->GetPrimaryFrameFor(aContent, frame);
+ if (nsnull != frame) {
+ res = frame->QueryInterface(kIFormControlFrameIID, (void**)&aFormControlFrame);
+ }
+ NS_RELEASE(presShell);
+ }
+ NS_RELEASE(doc);
+ }
+
+ return res;
+}
+
// XXX check all mappings against ebina's usage
static nsGenericHTMLElement::EnumTable kAlignTable[] = {
{ "left", NS_STYLE_TEXT_ALIGN_LEFT },
diff --git a/layout/html/content/src/nsGenericHTMLElement.h b/layout/html/content/src/nsGenericHTMLElement.h
index 02972e377c1..f24c1199fc2 100644
--- a/layout/html/content/src/nsGenericHTMLElement.h
+++ b/layout/html/content/src/nsGenericHTMLElement.h
@@ -46,6 +46,7 @@ class nsChildContentList;
class nsDOMCSSDeclaration;
class nsIDOMCSSStyleDeclaration;
class nsIURL;
+class nsIFormControlFrame;
class nsGenericHTMLElement : public nsGenericElement {
public:
@@ -237,6 +238,10 @@ public:
const nsIAtom* aAttribute,
PRInt32* aHint);
+ //XXX This creates a dependency between content and frames
+ static nsresult GetPrimaryFrame(nsIHTMLContent* aContent,
+ nsIFormControlFrame *&aFormControlFrame);
+
nsIHTMLAttributes* mAttributes;
};
diff --git a/layout/html/content/src/nsHTMLInputElement.cpp b/layout/html/content/src/nsHTMLInputElement.cpp
index ed3220b5f6e..10db0cf9103 100644
--- a/layout/html/content/src/nsHTMLInputElement.cpp
+++ b/layout/html/content/src/nsHTMLInputElement.cpp
@@ -139,9 +139,6 @@ protected:
nsIForm* mForm;
PRInt32 mType;
- // Return the primary frame associated with this content
- nsresult GetPrimaryFrame(nsIFormControlFrame *&aFormControlFrame);
-
PRBool IsImage() const {
nsAutoString tmp;
mInner.GetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::type, tmp);
@@ -324,7 +321,7 @@ nsHTMLInputElement::GetValue(nsString& aValue)
GetType(&type);
if (NS_FORM_INPUT_TEXT == type || NS_FORM_INPUT_PASSWORD == type) {
nsIFormControlFrame* formControlFrame = nsnull;
- if (NS_OK == GetPrimaryFrame(formControlFrame)) {
+ if (NS_OK == nsGenericHTMLElement::GetPrimaryFrame(this, formControlFrame)) {
formControlFrame->GetProperty(nsHTMLAtoms::value, aValue);
NS_RELEASE(formControlFrame);
return NS_OK;
@@ -341,7 +338,7 @@ nsHTMLInputElement::SetValue(const nsString& aValue)
GetType(&type);
if (NS_FORM_INPUT_TEXT == type) {
nsIFormControlFrame* formControlFrame = nsnull;
- if (NS_OK == GetPrimaryFrame(formControlFrame)) {
+ if (NS_OK == nsGenericHTMLElement::GetPrimaryFrame(this, formControlFrame)) {
formControlFrame->SetProperty(nsHTMLAtoms::value, aValue);
NS_RELEASE(formControlFrame);
}
@@ -353,7 +350,7 @@ NS_IMETHODIMP
nsHTMLInputElement::GetChecked(PRBool* aValue)
{
nsIFormControlFrame* formControlFrame = nsnull;
- if (NS_OK == GetPrimaryFrame(formControlFrame)) {
+ if (NS_OK == nsGenericHTMLElement::GetPrimaryFrame(this, formControlFrame)) {
if (nsnull != formControlFrame) {
nsString value("0");
formControlFrame->GetProperty(nsHTMLAtoms::checked, value);
@@ -373,7 +370,7 @@ NS_IMETHODIMP
nsHTMLInputElement::SetChecked(PRBool aValue)
{
nsIFormControlFrame* formControlFrame = nsnull;
- if (NS_OK == GetPrimaryFrame(formControlFrame)) {
+ if (NS_OK == nsGenericHTMLElement::GetPrimaryFrame(this, formControlFrame)) {
if (PR_TRUE == aValue) {
formControlFrame->SetProperty(nsHTMLAtoms::checked, "1");
}
@@ -679,26 +676,4 @@ nsHTMLInputElement::GetStyleHintForAttributeChange(
return NS_OK;
}
-nsresult nsHTMLInputElement::GetPrimaryFrame(nsIFormControlFrame *&aFormControlFrame)
-{
- nsIDocument* doc = nsnull;
- nsresult res = NS_NOINTERFACE;
- // Get the document
- if (NS_OK == GetDocument(doc)) {
- // Get presentation shell 0
- nsIPresShell* presShell = doc->GetShellAt(0);
- if (nsnull != presShell) {
- nsIFrame *frame = nsnull;
- presShell->GetPrimaryFrameFor(this, frame);
- if (nsnull != frame) {
- res = frame->QueryInterface(kIFormControlFrameIID, (void**)&aFormControlFrame);
- }
- NS_RELEASE(presShell);
- }
- NS_RELEASE(doc);
- }
-
- return res;
-}
-
diff --git a/layout/html/content/src/nsHTMLTextAreaElement.cpp b/layout/html/content/src/nsHTMLTextAreaElement.cpp
index 812b5abf90e..2a36887132a 100644
--- a/layout/html/content/src/nsHTMLTextAreaElement.cpp
+++ b/layout/html/content/src/nsHTMLTextAreaElement.cpp
@@ -32,6 +32,7 @@
#include "nsIWidget.h"
#include "nsITextAreaWidget.h"
#include "nsIHTMLAttributes.h"
+#include "nsIFormControlFrame.h"
static NS_DEFINE_IID(kIDOMHTMLTextAreaElementIID, NS_IDOMHTMLTEXTAREAELEMENT_IID);
static NS_DEFINE_IID(kIDOMHTMLFormElementIID, NS_IDOMHTMLFORMELEMENT_IID);
@@ -265,39 +266,32 @@ nsHTMLTextAreaElement::GetType(nsString& aType)
NS_IMETHODIMP
nsHTMLTextAreaElement::GetValue(nsString& aValue)
{
- if (nsnull != mWidget) {
- nsITextAreaWidget* text = nsnull;
- if (NS_OK == mWidget->QueryInterface(kITextAreaWidgetIID,(void**)&text)) {
- PRUint32 size;
- text->GetText(aValue,0,size);
- NS_RELEASE(text);
+ nsIFormControlFrame* formControlFrame = nsnull;
+ if (NS_OK == nsGenericHTMLElement::GetPrimaryFrame(this, formControlFrame)) {
+ formControlFrame->GetProperty(nsHTMLAtoms::value, aValue);
+ NS_RELEASE(formControlFrame);
return NS_OK;
- }
- }
-
- return mInner.GetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::value, aValue);
+ }
+ //XXX: Should this ASSERT instead of getting the default value here?
+ return mInner.GetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::value, aValue);
}
NS_IMETHODIMP
nsHTMLTextAreaElement::SetValue(const nsString& aValue)
{
- if (nsnull != mWidget) {
- nsITextAreaWidget* text = nsnull;
- if (NS_OK == mWidget->QueryInterface(kITextAreaWidgetIID,(void**)&text)) {
- PRUint32 size;
- text->SetText(aValue,size);
- NS_RELEASE(text);
- }
- }
-
- return mInner.SetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::value, aValue, PR_TRUE);
+ nsIFormControlFrame* formControlFrame = nsnull;
+ if (NS_OK == nsGenericHTMLElement::GetPrimaryFrame(this, formControlFrame)) {
+ formControlFrame->SetProperty(nsHTMLAtoms::value, aValue);
+ NS_RELEASE(formControlFrame);
+ }
+ return NS_OK;
}
NS_IMETHODIMP
nsHTMLTextAreaElement::GetDefaultValue(nsString& aDefaultValue)
{
- mInner.GetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::defaultvalue, aDefaultValue);
+ mInner.GetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::value, aDefaultValue);
return NS_OK;
}
@@ -308,7 +302,6 @@ nsHTMLTextAreaElement::SetDefaultValue(const nsString& aDefaultValue)
static char whitespace[] = " \r\n\t";
nsString value(aDefaultValue);
value.Trim(whitespace, PR_TRUE, PR_FALSE);
- mInner.SetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::defaultvalue, value, PR_TRUE);
mInner.SetAttribute(kNameSpaceID_HTML, nsHTMLAtoms::value, value, PR_TRUE);
return NS_OK;
diff --git a/layout/html/forms/src/nsTextControlFrame.cpp b/layout/html/forms/src/nsTextControlFrame.cpp
index d37534361f9..dc3150e6260 100644
--- a/layout/html/forms/src/nsTextControlFrame.cpp
+++ b/layout/html/forms/src/nsTextControlFrame.cpp
@@ -739,11 +739,17 @@ void nsTextControlFrame::GetTextControlFrameState(nsString& aValue)
{
if (nsnull != mWidget) {
nsITextWidget* text = nsnull;
+ nsITextAreaWidget* textArea = nsnull;
+ PRUint32 size = 0;
if (NS_OK == mWidget->QueryInterface(kITextWidgetIID,(void**)&text)) {
- PRUint32 size;
text->GetText(aValue,0,size);
NS_RELEASE(text);
}
+ else if (NS_OK == mWidget->QueryInterface(kITextAreaWidgetIID,
+ (void**)&textArea)) {
+ textArea->GetText(aValue,0, size);
+ NS_RELEASE(textArea);
+ }
}
else {
//XXX: this should return the a local field for GFX-rendered widgets aValue = "";
@@ -754,13 +760,18 @@ void nsTextControlFrame::SetTextControlFrameState(const nsString& aValue)
{
if (nsnull != mWidget) {
nsITextWidget* text = nsnull;
+ nsITextAreaWidget* textArea = nsnull;
+ PRUint32 size = 0;
if (NS_OK == mWidget->QueryInterface(kITextWidgetIID,(void**)&text)) {
- PRUint32 size;
text->SetText(aValue,size);
NS_RELEASE(text);
+ } else if (NS_OK == mWidget->QueryInterface(kITextAreaWidgetIID,
+ (void**)&textArea)) {
+ textArea->SetText(aValue,size);
+ NS_RELEASE(textArea);
}
- }
-}
+ }
+}
NS_IMETHODIMP nsTextControlFrame::SetProperty(nsIAtom* aName, const nsString& aValue)
{
@@ -769,7 +780,6 @@ NS_IMETHODIMP nsTextControlFrame::SetProperty(nsIAtom* aName, const nsString& aV
else {
return nsFormControlFrame::SetProperty(aName, aValue);
}
-
return NS_OK;
}