void PopupBoxObject::OpenPopup(Element* aAnchorElement, const nsAString& aPosition, int32_t aXPos, int32_t aYPos, bool aIsContextMenu, bool aAttributesOverride, Event* aTriggerEvent) { nsXULPopupManager* pm = nsXULPopupManager::GetInstance(); if (pm && mContent) { nsCOMPtr<nsIContent> anchorContent(do_QueryInterface(aAnchorElement)); pm->ShowPopup(mContent, anchorContent, aPosition, aXPos, aYPos, aIsContextMenu, aAttributesOverride, false, aTriggerEvent); } }
void PopupBoxObject::MoveToAnchor(Element* aAnchorElement, const nsAString& aPosition, int32_t aXPos, int32_t aYPos, bool aAttributesOverride) { if (mContent) { nsCOMPtr<nsIContent> anchorContent(do_QueryInterface(aAnchorElement)); nsMenuPopupFrame *menuPopupFrame = do_QueryFrame(mContent->GetPrimaryFrame()); if (menuPopupFrame && menuPopupFrame->IsVisible()) { menuPopupFrame->MoveToAnchor(anchorContent, aPosition, aXPos, aYPos, aAttributesOverride); } } }
NS_IMETHODIMP nsPopupBoxObject::OpenPopup(nsIDOMElement* aAnchorElement, const nsAString& aPosition, PRInt32 aXPos, PRInt32 aYPos, PRBool aIsContextMenu, PRBool aAttributesOverride) { nsXULPopupManager* pm = nsXULPopupManager::GetInstance(); if (pm) { nsCOMPtr<nsIContent> anchorContent(do_QueryInterface(aAnchorElement)); pm->ShowPopup(mContent, anchorContent, aPosition, aXPos, aYPos, aIsContextMenu, aAttributesOverride, PR_FALSE, nsnull); } return NS_OK; }
NS_IMETHODIMP nsPopupBoxObject::MoveToAnchor(nsIDOMElement* aAnchorElement, const nsAString& aPosition, int32_t aXPos, int32_t aYPos, bool aAttributesOverride) { if (mContent) { nsCOMPtr<nsIContent> anchorContent(do_QueryInterface(aAnchorElement)); nsMenuPopupFrame *menuPopupFrame = do_QueryFrame(mContent->GetPrimaryFrame()); if (menuPopupFrame && menuPopupFrame->PopupState() == ePopupOpenAndVisible) { menuPopupFrame->MoveToAnchor(anchorContent, aPosition, aXPos, aYPos, aAttributesOverride); } } return NS_OK; }
NS_IMETHODIMP nsPopupBoxObject::ShowPopup(nsIDOMElement* aAnchorElement, nsIDOMElement* aPopupElement, int32_t aXPos, int32_t aYPos, const PRUnichar *aPopupType, const PRUnichar *aAnchorAlignment, const PRUnichar *aPopupAlignment) { NS_ENSURE_TRUE(aPopupElement, NS_ERROR_INVALID_ARG); // srcContent can be null. nsXULPopupManager* pm = nsXULPopupManager::GetInstance(); if (pm && mContent) { nsCOMPtr<nsIContent> anchorContent(do_QueryInterface(aAnchorElement)); nsAutoString popupType(aPopupType); nsAutoString anchor(aAnchorAlignment); nsAutoString align(aPopupAlignment); pm->ShowPopupWithAnchorAlign(mContent, anchorContent, anchor, align, aXPos, aYPos, popupType.EqualsLiteral("context")); } return NS_OK; }