From e317dd137f079070f34251e13c6a3e40b57410fb Mon Sep 17 00:00:00 2001 From: "sicking%bigfoot.com" Date: Wed, 10 Apr 2002 14:03:12 +0000 Subject: [PATCH] Bug 135679: fixes form submit when target url is same page and current url has anchor. r=jkeiser sr=attinasi a=rjesup git-svn-id: svn://10.0.0.236/branches/MOZILLA_1_0_BRANCH@118619 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/content/html/content/src/nsHTMLFormElement.cpp | 5 +++++ mozilla/docshell/base/nsDocShell.cpp | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/mozilla/content/html/content/src/nsHTMLFormElement.cpp b/mozilla/content/html/content/src/nsHTMLFormElement.cpp index e3602495db8..00992b6c8b2 100644 --- a/mozilla/content/html/content/src/nsHTMLFormElement.cpp +++ b/mozilla/content/html/content/src/nsHTMLFormElement.cpp @@ -755,6 +755,11 @@ nsHTMLFormElement::DoSubmit(nsIPresContext* aPresContext, nsEvent* aEvent) nsCOMPtr webProgress = do_GetInterface(docShell); NS_ASSERTION(webProgress, "nsIDocShell not converted to nsIWebProgress!"); rv = webProgress->AddProgressListener(this); + NS_ENSURE_SUBMIT_SUCCESS(rv); + } + else { + // in case we didn't do anything, reset mIsSubmitting + mIsSubmitting = PR_FALSE; } return rv; diff --git a/mozilla/docshell/base/nsDocShell.cpp b/mozilla/docshell/base/nsDocShell.cpp index de48e2d1c6e..a53828896a7 100644 --- a/mozilla/docshell/base/nsDocShell.cpp +++ b/mozilla/docshell/base/nsDocShell.cpp @@ -5132,12 +5132,17 @@ nsDocShell::ScrollIfAnchor(nsIURI * aURI, PRBool * aWasAnchor, PRUint32 aLoadTyp newSpec.BeginReading(urlStart); newSpec.EndReading(refEnd); + // hasAnchor is used to check if the new URI really has anchor + // We can't always scroll, it would break submitting a form that has + // same target page. + PRBool hasAnchor = PR_FALSE; PRInt32 hashNew = newSpec.FindChar(kHash); if (hashNew == 0) { return NS_OK; // Strange URI } else if (hashNew > 0) { // found it + hasAnchor = PR_TRUE; urlEnd = urlStart; urlEnd.advance(hashNew); @@ -5254,7 +5259,8 @@ nsDocShell::ScrollIfAnchor(nsIURI * aURI, PRBool * aWasAnchor, PRUint32 aLoadTyp } } else { - *aWasAnchor = PR_TRUE; + // Tell there was an anchor only if there really was one (bug 135679) + *aWasAnchor = hasAnchor; } return NS_OK;