From b3c0caac38af7e0ded99d7cc5acdb60d3da2fd7e Mon Sep 17 00:00:00 2001 From: "alecf%netscape.com" Date: Sat, 5 Feb 2000 01:03:39 +0000 Subject: [PATCH] when form elements are generated via a template, set the form to the XUL Doc's hidden form so that the element behaves correctly. r=waterson git-svn-id: svn://10.0.0.236/trunk@59816 18797224-902f-48f8-a5cc-f745e15eee43 --- .../xul/templates/src/nsXULTemplateBuilder.cpp | 11 +++++++++++ mozilla/rdf/content/src/nsRDFGenericBuilder.cpp | 11 +++++++++++ mozilla/rdf/content/src/nsXULTemplateBuilder.cpp | 11 +++++++++++ 3 files changed, 33 insertions(+) diff --git a/mozilla/content/xul/templates/src/nsXULTemplateBuilder.cpp b/mozilla/content/xul/templates/src/nsXULTemplateBuilder.cpp index 254d7c7b54f..7fce160da68 100644 --- a/mozilla/content/xul/templates/src/nsXULTemplateBuilder.cpp +++ b/mozilla/content/xul/templates/src/nsXULTemplateBuilder.cpp @@ -83,6 +83,8 @@ #include "prlog.h" #include "rdf.h" #include "rdfutil.h" +#include "nsIFormControl.h" +#include "nsIDOMHTMLFormElement.h" // Return values for EnsureElementHasGenericChild() #define NS_RDF_ELEMENT_GOT_CREATED NS_RDF_NO_VALUE @@ -3164,6 +3166,15 @@ RDFGenericBuilderImpl::CreateElement(PRInt32 aNameSpaceID, return NS_ERROR_UNEXPECTED; } + // + nsCOMPtr formControl = do_QueryInterface(result); + if (formControl) { + nsCOMPtr form; + rv = mDocument->GetForm(getter_AddRefs(form)); + if (NS_SUCCEEDED(rv) && form) + formControl->SetForm(form); + } + rv = result->SetDocument(doc, PR_FALSE); NS_ASSERTION(NS_SUCCEEDED(rv), "unable to set element's document"); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/rdf/content/src/nsRDFGenericBuilder.cpp b/mozilla/rdf/content/src/nsRDFGenericBuilder.cpp index 254d7c7b54f..7fce160da68 100644 --- a/mozilla/rdf/content/src/nsRDFGenericBuilder.cpp +++ b/mozilla/rdf/content/src/nsRDFGenericBuilder.cpp @@ -83,6 +83,8 @@ #include "prlog.h" #include "rdf.h" #include "rdfutil.h" +#include "nsIFormControl.h" +#include "nsIDOMHTMLFormElement.h" // Return values for EnsureElementHasGenericChild() #define NS_RDF_ELEMENT_GOT_CREATED NS_RDF_NO_VALUE @@ -3164,6 +3166,15 @@ RDFGenericBuilderImpl::CreateElement(PRInt32 aNameSpaceID, return NS_ERROR_UNEXPECTED; } + // + nsCOMPtr formControl = do_QueryInterface(result); + if (formControl) { + nsCOMPtr form; + rv = mDocument->GetForm(getter_AddRefs(form)); + if (NS_SUCCEEDED(rv) && form) + formControl->SetForm(form); + } + rv = result->SetDocument(doc, PR_FALSE); NS_ASSERTION(NS_SUCCEEDED(rv), "unable to set element's document"); if (NS_FAILED(rv)) return rv; diff --git a/mozilla/rdf/content/src/nsXULTemplateBuilder.cpp b/mozilla/rdf/content/src/nsXULTemplateBuilder.cpp index 254d7c7b54f..7fce160da68 100644 --- a/mozilla/rdf/content/src/nsXULTemplateBuilder.cpp +++ b/mozilla/rdf/content/src/nsXULTemplateBuilder.cpp @@ -83,6 +83,8 @@ #include "prlog.h" #include "rdf.h" #include "rdfutil.h" +#include "nsIFormControl.h" +#include "nsIDOMHTMLFormElement.h" // Return values for EnsureElementHasGenericChild() #define NS_RDF_ELEMENT_GOT_CREATED NS_RDF_NO_VALUE @@ -3164,6 +3166,15 @@ RDFGenericBuilderImpl::CreateElement(PRInt32 aNameSpaceID, return NS_ERROR_UNEXPECTED; } + // + nsCOMPtr formControl = do_QueryInterface(result); + if (formControl) { + nsCOMPtr form; + rv = mDocument->GetForm(getter_AddRefs(form)); + if (NS_SUCCEEDED(rv) && form) + formControl->SetForm(form); + } + rv = result->SetDocument(doc, PR_FALSE); NS_ASSERTION(NS_SUCCEEDED(rv), "unable to set element's document"); if (NS_FAILED(rv)) return rv;