NS_IMETHODIMP nsTextBoxFrame::AttributeChanged(PRInt32 aNameSpaceID, nsIAtom* aAttribute, PRInt32 aModType) { PRBool aResize; PRBool aRedraw; UpdateAttributes(aAttribute, aResize, aRedraw); if (aResize) { PresContext()->PresShell()-> FrameNeedsReflow(this, nsIPresShell::eStyleChange, NS_FRAME_IS_DIRTY); } else if (aRedraw) { nsBoxLayoutState state(PresContext()); Redraw(state); } // If the accesskey changed, register for the new value // The old value has been unregistered in nsXULElement::SetAttr if (aAttribute == nsGkAtoms::accesskey || aAttribute == nsGkAtoms::control) RegUnregAccessKey(PR_TRUE); return NS_OK; }
void nsTextBoxFrame::DestroyFrom(nsIFrame* aDestructRoot) { // unregister access key RegUnregAccessKey(PR_FALSE); nsTextBoxFrameSuper::DestroyFrom(aDestructRoot); }
nsresult nsXTFElementWrapper::SetAttr(PRInt32 aNameSpaceID, nsIAtom* aName, nsIAtom* aPrefix, const nsAString& aValue, PRBool aNotify) { nsresult rv; if (aNameSpaceID == kNameSpaceID_None && (mNotificationMask & nsIXTFElement::NOTIFY_WILL_SET_ATTRIBUTE)) GetXTFElement()->WillSetAttribute(aName, aValue); if (aNameSpaceID==kNameSpaceID_None && HandledByInner(aName)) { rv = mAttributeHandler->SetAttribute(aName, aValue); // XXX mutation events? } else { // let wrapper handle it rv = nsXTFElementWrapperBase::SetAttr(aNameSpaceID, aName, aPrefix, aValue, aNotify); } if (aNameSpaceID == kNameSpaceID_None && (mNotificationMask & nsIXTFElement::NOTIFY_ATTRIBUTE_SET)) GetXTFElement()->AttributeSet(aName, aValue); if (mNotificationMask & nsIXTFElement::NOTIFY_PERFORM_ACCESSKEY) { nsCOMPtr<nsIDOMAttr> accesskey; GetXTFElement()->GetAccesskeyNode(getter_AddRefs(accesskey)); nsCOMPtr<nsIAttribute> attr(do_QueryInterface(accesskey)); if (attr && attr->NodeInfo()->Equals(aName, aNameSpaceID)) RegUnregAccessKey(PR_TRUE); } return rv; }
void nsTextBoxFrame::Destroy() { // unregister access key RegUnregAccessKey(PR_FALSE); nsTextBoxFrameSuper::Destroy(); }
void nsXULLabelFrame::DestroyFrom(nsIFrame* aDestructRoot) { // unregister access key RegUnregAccessKey(false); nsBlockFrame::DestroyFrom(aDestructRoot); }
void nsXTFElementWrapper::UnbindFromTree(PRBool aDeep, PRBool aNullParent) { // XXXbz making up random order for the notifications... Perhaps // this api should more closely match BindToTree/UnbindFromTree? PRBool inDoc = IsInDoc(); if (inDoc && (mNotificationMask & nsIXTFElement::NOTIFY_WILL_CHANGE_DOCUMENT)) { GetXTFElement()->WillChangeDocument(nsnull); } PRBool parentChanged = aNullParent && GetParent(); if (parentChanged && (mNotificationMask & nsIXTFElement::NOTIFY_WILL_CHANGE_PARENT)) { GetXTFElement()->WillChangeParent(nsnull); } if (mNotificationMask & nsIXTFElement::NOTIFY_PERFORM_ACCESSKEY) RegUnregAccessKey(PR_FALSE); nsXTFElementWrapperBase::UnbindFromTree(aDeep, aNullParent); if (parentChanged && (mNotificationMask & nsIXTFElement::NOTIFY_PARENT_CHANGED)) { GetXTFElement()->ParentChanged(nsnull); } if (inDoc && (mNotificationMask & nsIXTFElement::NOTIFY_DOCUMENT_CHANGED)) { GetXTFElement()->DocumentChanged(nsnull); } }
void nsXULLabelFrame::Init(nsIContent* aContent, nsIFrame* aParent, nsIFrame* aPrevInFlow) { nsBlockFrame::Init(aContent, aParent, aPrevInFlow); // register access key RegUnregAccessKey(true); }
NS_IMETHODIMP nsXULLabelFrame::Init(nsIContent* aContent, nsIFrame* aParent, nsIFrame* aPrevInFlow) { nsresult rv = nsBlockFrame::Init(aContent, aParent, aPrevInFlow); if (NS_FAILED(rv)) return rv; // register access key return RegUnregAccessKey(true); }
nsresult nsXTFElementWrapper::BindToTree(nsIDocument* aDocument, nsIContent* aParent, nsIContent* aBindingParent, PRBool aCompileEventHandlers) { // XXXbz making up random order for the notifications... Perhaps // this api should more closely match BindToTree/UnbindFromTree? nsCOMPtr<nsIDOMElement> domParent; if (aParent != GetParent()) { domParent = do_QueryInterface(aParent); } nsCOMPtr<nsIDOMDocument> domDocument; if (aDocument && (mNotificationMask & (nsIXTFElement::NOTIFY_WILL_CHANGE_DOCUMENT | nsIXTFElement::NOTIFY_DOCUMENT_CHANGED))) { domDocument = do_QueryInterface(aDocument); } if (domDocument && (mNotificationMask & (nsIXTFElement::NOTIFY_WILL_CHANGE_DOCUMENT))) { GetXTFElement()->WillChangeDocument(domDocument); } if (domParent && (mNotificationMask & (nsIXTFElement::NOTIFY_WILL_CHANGE_PARENT))) { GetXTFElement()->WillChangeParent(domParent); } nsresult rv = nsXTFElementWrapperBase::BindToTree(aDocument, aParent, aBindingParent, aCompileEventHandlers); NS_ENSURE_SUCCESS(rv, rv); if (mNotificationMask & nsIXTFElement::NOTIFY_PERFORM_ACCESSKEY) RegUnregAccessKey(PR_TRUE); if (domDocument && (mNotificationMask & (nsIXTFElement::NOTIFY_DOCUMENT_CHANGED))) { GetXTFElement()->DocumentChanged(domDocument); } if (domParent && (mNotificationMask & (nsIXTFElement::NOTIFY_PARENT_CHANGED))) { GetXTFElement()->ParentChanged(domParent); } return rv; }
NS_IMETHODIMP nsXULLabelFrame::AttributeChanged(int32_t aNameSpaceID, nsIAtom* aAttribute, int32_t aModType) { nsresult rv = nsBlockFrame::AttributeChanged(aNameSpaceID, aAttribute, aModType); // If the accesskey changed, register for the new value // The old value has been unregistered in nsXULElement::SetAttr if (aAttribute == nsGkAtoms::accesskey || aAttribute == nsGkAtoms::control) RegUnregAccessKey(true); return rv; }
NS_IMETHODIMP nsTextBoxFrame::Init(nsIContent* aContent, nsIFrame* aParent, nsIFrame* aPrevInFlow) { nsTextBoxFrameSuper::Init(aContent, aParent, aPrevInFlow); PRBool aResize; PRBool aRedraw; UpdateAttributes(nsnull, aResize, aRedraw); /* update all */ // register access key RegUnregAccessKey(PR_TRUE); return NS_OK; }
nsresult nsXTFElementWrapper::UnsetAttr(PRInt32 aNameSpaceID, nsIAtom* aAttr, PRBool aNotify) { nsresult rv; if (aNameSpaceID == kNameSpaceID_None && (mNotificationMask & nsIXTFElement::NOTIFY_WILL_REMOVE_ATTRIBUTE)) GetXTFElement()->WillRemoveAttribute(aAttr); if (mNotificationMask & nsIXTFElement::NOTIFY_PERFORM_ACCESSKEY) { nsCOMPtr<nsIDOMAttr> accesskey; GetXTFElement()->GetAccesskeyNode(getter_AddRefs(accesskey)); nsCOMPtr<nsIAttribute> attr(do_QueryInterface(accesskey)); if (attr && attr->NodeInfo()->Equals(aAttr, aNameSpaceID)) RegUnregAccessKey(PR_FALSE); } if (aNameSpaceID==kNameSpaceID_None && HandledByInner(aAttr)) { nsDOMSlots *slots = GetExistingDOMSlots(); if (slots && slots->mAttributeMap) { slots->mAttributeMap->DropAttribute(aNameSpaceID, aAttr); } rv = mAttributeHandler->RemoveAttribute(aAttr); // XXX if the RemoveAttribute() call fails, we might end up having removed // the attribute from the attribute map even though the attribute is still // on the element // https://bugzilla.mozilla.org/show_bug.cgi?id=296205 // XXX mutation events? } else { // try wrapper rv = nsXTFElementWrapperBase::UnsetAttr(aNameSpaceID, aAttr, aNotify); } if (aNameSpaceID == kNameSpaceID_None && (mNotificationMask & nsIXTFElement::NOTIFY_ATTRIBUTE_REMOVED)) GetXTFElement()->AttributeRemoved(aAttr); return rv; }