NS_IMETHODIMP HTMLMenuItemElement::SetChecked(bool aChecked) { bool checkedChanged = mChecked != aChecked; mChecked = aChecked; if (mType == CMD_TYPE_RADIO) { if (checkedChanged) { if (mCheckedDirty) { ClearCheckedVisitor visitor(this); WalkRadioGroup(&visitor); } else { ClearCheckedVisitor visitor1(this); SetCheckedDirtyVisitor visitor2; CombinedVisitor visitor(&visitor1, &visitor2); WalkRadioGroup(&visitor); } } else if (!mCheckedDirty) { SetCheckedDirtyVisitor visitor; WalkRadioGroup(&visitor); } } else { mCheckedDirty = true; } return NS_OK; }
void HTMLMenuItemElement::AddedToRadioGroup() { bool checkedDirty = mCheckedDirty; if (mChecked) { ClearCheckedVisitor visitor1(this); GetCheckedDirtyVisitor visitor2(&checkedDirty, this); CombinedVisitor visitor(&visitor1, &visitor2); WalkRadioGroup(&visitor); } else { GetCheckedDirtyVisitor visitor(&checkedDirty, this); WalkRadioGroup(&visitor); } mCheckedDirty = checkedDirty; }