NS_IMETHODIMP nsTreeSelection::SetCurrentIndex(PRInt32 aIndex) { if (mCurrentIndex == aIndex) { return NS_OK; } if (mCurrentIndex != -1) mTree->InvalidateRow(mCurrentIndex); mCurrentIndex = aIndex; if (aIndex != -1) mTree->InvalidateRow(aIndex); // Fire DOMMenuItemActive event for tree nsCOMPtr<nsIBoxObject> boxObject = do_QueryInterface(mTree); NS_ASSERTION(boxObject, "no box object!"); if (!boxObject) return NS_ERROR_UNEXPECTED; nsCOMPtr<nsIDOMElement> treeElt; boxObject->GetElement(getter_AddRefs(treeElt)); nsCOMPtr<nsIDOMNode> treeDOMNode(do_QueryInterface(treeElt)); NS_ENSURE_TRUE(treeDOMNode, NS_ERROR_UNEXPECTED); nsPLDOMEvent *event = new nsPLDOMEvent(treeDOMNode, NS_LITERAL_STRING("DOMMenuItemActive")); nsresult rv; if (event) { rv = event->PostDOMEvent(); if (NS_FAILED(rv)) { PL_DestroyEvent(event); } } else { rv = NS_ERROR_OUT_OF_MEMORY; } return rv; }
NS_IMETHODIMP nsTreeSelection::SetCurrentIndex(PRInt32 aIndex) { if (!mTree) { return NS_ERROR_UNEXPECTED; } if (mCurrentIndex == aIndex) { return NS_OK; } if (mCurrentIndex != -1 && mTree) mTree->InvalidateRow(mCurrentIndex); mCurrentIndex = aIndex; if (!mTree) return NS_OK; if (aIndex != -1) mTree->InvalidateRow(aIndex); // Fire DOMMenuItemActive or DOMMenuItemInactive event for tree. nsCOMPtr<nsIBoxObject> boxObject = do_QueryInterface(mTree); NS_ASSERTION(boxObject, "no box object!"); if (!boxObject) return NS_ERROR_UNEXPECTED; nsCOMPtr<nsIDOMElement> treeElt; boxObject->GetElement(getter_AddRefs(treeElt)); nsCOMPtr<nsINode> treeDOMNode(do_QueryInterface(treeElt)); NS_ENSURE_STATE(treeDOMNode); NS_NAMED_LITERAL_STRING(DOMMenuItemActive, "DOMMenuItemActive"); NS_NAMED_LITERAL_STRING(DOMMenuItemInactive, "DOMMenuItemInactive"); nsRefPtr<nsAsyncDOMEvent> event = new nsAsyncDOMEvent(treeDOMNode, (aIndex != -1 ? DOMMenuItemActive : DOMMenuItemInactive), true, false); return event->PostDOMEvent(); }
NS_IMETHODIMP nsTreeSelection::SetCurrentIndex(PRInt32 aIndex) { if (!mTree) { return NS_ERROR_UNEXPECTED; } if (mCurrentIndex == aIndex) { return NS_OK; } if (mCurrentIndex != -1 && mTree) mTree->InvalidateRow(mCurrentIndex); mCurrentIndex = aIndex; if (!mTree) return NS_OK; if (aIndex != -1) mTree->InvalidateRow(aIndex); // Fire DOMMenuItemActive event for tree nsCOMPtr<nsIBoxObject> boxObject = do_QueryInterface(mTree); NS_ASSERTION(boxObject, "no box object!"); if (!boxObject) return NS_ERROR_UNEXPECTED; nsCOMPtr<nsIDOMElement> treeElt; boxObject->GetElement(getter_AddRefs(treeElt)); nsCOMPtr<nsINode> treeDOMNode(do_QueryInterface(treeElt)); NS_ENSURE_STATE(treeDOMNode); nsRefPtr<nsPLDOMEvent> event = new nsPLDOMEvent(treeDOMNode, NS_LITERAL_STRING("DOMMenuItemActive"), PR_TRUE, PR_FALSE); if (!event) return NS_ERROR_OUT_OF_MEMORY; return event->PostDOMEvent(); }