Opacity does not affect MenuItemToggle objects, why?

Hi, I am trying to determine why opacity does not affect CCMenuItemToggle items? This is true when calling setOpacity() on the object directly as well as when calling actions such as FadeTo() or reducing the opacity of its parent.

I’m using Cocos2dx v2.6 but do not understand why CCMenuItemToggle in particular cannot be set to transparent. If I add a CCMenuItemToggle and several regular CCMenuItem objects to a CCMenu as children, then set the parent CCMenu to 50% opacity, all the toggle items remain 100% opaque while the standard CCMenuItems reflect properly.

Below is a simple modified example demonstrating the issue from the default Hello World sample application.

CCMenuItemImage *pCloseItemA = CCMenuItemImage::create("CloseNormal.png", "CloseNormal.png", this, NULL);
    CCMenuItemImage *pCloseItemB = CCMenuItemImage::create("CloseSelected.png", "CloseSelected.png", this, NULL);

    // Create toggle element that causes the problem
    CCMenuItemToggle *pCloseItemToggle = CCMenuItemToggle::createWithTarget(this, NULL, pCloseItemA, pCloseItemB, NULL);

    pCloseItemToggle->setPosition(ccp(origin.x + visibleSize.width - pCloseItemToggle->getContentSize().width/2 , origin.y + pCloseItemToggle->getContentSize().height/2));

    // create menu, it's an autorelease object
    CCMenu* pMenu = CCMenu::create(pCloseItemToggle, NULL);
    pMenu->setPosition(CCPointZero);

    // This has no affect on CCMenuItemToggle
    pMenu->setCascadeOpacityEnabled(true);
    
    pMenu->setOpacity(0.0);    // !!! The toggle button still shows at 255 opacity. Why?
    this->addChild(pMenu, 1);

UPDATE: I tested using a simple MenuItemToggle in 3.x and it exhibits the same issue.

UPDATE 2: After further analysis, I discovered that calling setCascadeOpacityEnabled(true) on the MenuItemToggle itself is required for it to be affected by opacity (including when setting opacity via the parent Menu container). This behavior deviates from the other CCMenuItem classes and threw me off.

To alleviate the need to call SetCascadeOpacityEnabled(true) on every toggle item, one can alternatively set the options in the main CCMenuItem::initWithTarget constructor. i.e.,

bool CCMenuItem::initWithTarget(CCObject *rec, SEL_MenuHandler selector)
{
    setAnchorPoint(ccp(0.5f, 0.5f));
    m_pListener = rec;
    m_pfnSelector = selector;
    m_bEnabled = true;
    m_bSelected = false;

    // Make sure opacity and color values cascade to children
    this->setCascadeColorEnabled(true);
    this->setCascadeOpacityEnabled(true);

    return true;
}