From 96273d899953bfb9f42f1d63abae415f650ba8e4 Mon Sep 17 00:00:00 2001 From: "aaronr%us.ibm.com" Date: Thu, 12 Jul 2007 20:32:49 +0000 Subject: [PATCH] [XForms] Using repeat index for 1.1 delete does not work. Bug 387738, p=msterlin r=doronr+aaronr git-svn-id: svn://10.0.0.236/trunk@229837 18797224-902f-48f8-a5cc-f745e15eee43 --- .../extensions/xforms/nsXFormsInsertDeleteElement.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/mozilla/extensions/xforms/nsXFormsInsertDeleteElement.cpp b/mozilla/extensions/xforms/nsXFormsInsertDeleteElement.cpp index 8a9e265149c..75be35aa571 100644 --- a/mozilla/extensions/xforms/nsXFormsInsertDeleteElement.cpp +++ b/mozilla/extensions/xforms/nsXFormsInsertDeleteElement.cpp @@ -438,8 +438,7 @@ nsXFormsInsertDeleteElement::HandleAction(nsIDOMEvent *aEvent, nsCOMPtr locationDoc; nsCOMPtr locationDocElement; - nsCOMPtr parentNode, newNode, resNode; - + nsCOMPtr parentNode, newNode, resNode, instNode; if (mIsInsert) { // The cloned node or nodes are inserted in the order they were cloned at // their target location depending on their node type. @@ -517,6 +516,8 @@ nsXFormsInsertDeleteElement::HandleAction(nsIDOMEvent *aEvent, } } } + rv = nsXFormsUtils::GetInstanceNodeForData(resNode, getter_AddRefs(instNode)); + NS_ENSURE_SUCCESS(rv, rv); // Step 8: Set indexes for repeats rv = RefreshRepeats(&cloneNodes); @@ -551,6 +552,9 @@ nsXFormsInsertDeleteElement::HandleAction(nsIDOMEvent *aEvent, locationNode->GetOwnerDocument(getter_AddRefs(locationDoc)); NS_ENSURE_STATE(locationDoc); + rv = nsXFormsUtils::GetInstanceNodeForData(locationNode, getter_AddRefs(instNode)); + NS_ENSURE_SUCCESS(rv, rv); + locationDoc->GetDocumentElement(getter_AddRefs(locationDocElement)); while ((deleteIndex < deleteCount) && locationNode) { // Delete the node(s) unless the delete location is the root document @@ -579,9 +583,6 @@ nsXFormsInsertDeleteElement::HandleAction(nsIDOMEvent *aEvent, // Dispatch xforms-insert/delete event to the instance node we have modified // data for - nsCOMPtr instNode; - rv = nsXFormsUtils::GetInstanceNodeForData(locationNode, getter_AddRefs(instNode)); - NS_ENSURE_SUCCESS(rv, rv); rv = nsXFormsUtils::DispatchEvent(instNode, mIsInsert ? eEvent_Insert : eEvent_Delete); NS_ENSURE_SUCCESS(rv, rv);