From 369c57cd3a55038629fa41b5ab992d74de49a931 Mon Sep 17 00:00:00 2001 From: "allan%beaufour.dk" Date: Tue, 25 Jan 2005 09:15:20 +0000 Subject: [PATCH] Bind trigger to its node binding through nsXFormsControlStub, bug 279444, r=aaron git-svn-id: svn://10.0.0.236/trunk@168295 18797224-902f-48f8-a5cc-f745e15eee43 --- .../xforms/nsXFormsTriggerElement.cpp | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/mozilla/extensions/xforms/nsXFormsTriggerElement.cpp b/mozilla/extensions/xforms/nsXFormsTriggerElement.cpp index caa83a9ef60..75f963ad5d9 100644 --- a/mozilla/extensions/xforms/nsXFormsTriggerElement.cpp +++ b/mozilla/extensions/xforms/nsXFormsTriggerElement.cpp @@ -77,20 +77,14 @@ NS_IMPL_ISUPPORTS_INHERITED1(nsXFormsTriggerElement, NS_IMETHODIMP nsXFormsTriggerElement::OnCreated(nsIXTFXMLVisualWrapper *aWrapper) { - aWrapper->SetNotificationMask(nsIXTFElement::NOTIFY_HANDLE_DEFAULT); + nsresult rv = nsXFormsControlStub::OnCreated(aWrapper); + NS_ENSURE_SUCCESS(rv, rv); - nsCOMPtr node; - aWrapper->GetElementNode(getter_AddRefs(node)); - - // It's ok to keep a weak pointer to mElement. mElement will have an - // owning reference to this object, so as long as we null out mElement in - // OnDestroyed, it will always be valid. - - mElement = node; - NS_ASSERTION(mElement, "Wrapper is not an nsIDOMElement, we'll crash soon"); + aWrapper->SetNotificationMask(kStandardNotificationMask | + nsIXTFElement::NOTIFY_HANDLE_DEFAULT); nsCOMPtr domDoc; - node->GetOwnerDocument(getter_AddRefs(domDoc)); + mElement->GetOwnerDocument(getter_AddRefs(domDoc)); NS_ENSURE_STATE(domDoc); nsCOMPtr inputElement; @@ -99,7 +93,7 @@ nsXFormsTriggerElement::OnCreated(nsIXTFXMLVisualWrapper *aWrapper) getter_AddRefs(inputElement)); mButton = do_QueryInterface(inputElement); - NS_ENSURE_TRUE(mButton, NS_ERROR_FAILURE); + NS_ENSURE_STATE(mButton); return NS_OK; } @@ -125,6 +119,20 @@ nsXFormsTriggerElement::GetInsertionPoint(nsIDOMElement **aElement) NS_IMETHODIMP nsXFormsTriggerElement::Refresh() { + nsCOMPtr result; + nsresult rv = + ProcessNodeBinding(NS_LITERAL_STRING("ref"), + nsIDOMXPathResult::FIRST_ORDERED_NODE_TYPE, + getter_AddRefs(result)); + NS_ENSURE_SUCCESS(rv, rv); + + if (!result) { + return NS_OK; + } + + // Get context node, if any + result->GetSingleNodeValue(getter_AddRefs(mBoundNode)); + return NS_OK; }