Professional UI Solutions
Site Map   /  Register
 
 

Forum

Please Log In to post a new message or reply to an existing one. If you are not registered, please register.

NOTE: Some forums may be read-only if you are not currently subscribed to our technical support services.

Forums » Prof-UIS Tech Support » UI Theme popup menu selection bug Collapse All
Subject Author Date
Neville Franks Dec 11, 2006 - 2:02 AM

If you close the "UI Theme" Toolbar the View|UI Theme menu does not ’check’ the current theme’s menu item. If you change the theme and then use View|UI Theme you will see the previous theme is checked, not the current one. Showing the UI Theme Toolbar resolves this.

The Drawcli sample demonstrates this. It also happens in my app.

Neville, http://www.surfulater.com

Neville Franks Dec 12, 2006 - 5:34 PM

Thanks. That fixed it.

Technical Support Dec 12, 2006 - 4:43 AM

Thank you for reporting the problem. To fix it, please update the source code of the CExtThemeSwitcherToolControlBar::PreTranslateMessage() method in the ..\Prof-UIS\Src\ExtControls.cpp file:

BOOL CExtThemeSwitcherToolControlBar::PreTranslateMessage( MSG * pMsg )
{
    if(     m_bCommandProfileInitialized
        &&  GetSafeHwnd() != NULL
        &&  pMsg->message == CExtPopupMenuWnd::g_nMsgPrepareOneMenuLevel
        )
    {
        CExtPopupMenuWnd::MsgPrepareMenuData_t * pData =
            reinterpret_cast
            < CExtPopupMenuWnd::MsgPrepareMenuData_t * >
            ( pMsg->wParam );
        ASSERT( pData != NULL );
        CExtPopupMenuWnd * pPopup = pData->m_pPopup;
        ASSERT( pPopup != NULL );
#if (!defined __EXT_MFC_NO_CUSTOMIZE)
        bool bCustomizeMode = false;
        CExtPopupMenuWnd * pTestPopup = pPopup;
        for( ; pTestPopup != NULL ; pTestPopup = pTestPopup->GetParentMenuWnd() )
        {
            if( (pPopup->TrackFlagsGet()&TPMX_CUSTOMIZE_MODE) != 0 )
            {
                bCustomizeMode = true;
                break;
            }
        }
        if( ! bCustomizeMode )
        {
            CExtCustomizeSite * pSite =
                CExtCustomizeSite::GetCustomizeSite( m_hWnd );
            if( pSite != NULL )
            {
                bCustomizeMode = pSite->IsCustomizeMode();
                if( ! bCustomizeMode )
                    bCustomizeMode = ( pSite->DraggedNodeGet() != NULL ) ? true : false;
            }
        }
        if( ! bCustomizeMode )
#endif
        {
            for( ; true; )
            {
                INT nReplacePos =
                    pPopup->ItemFindPosForCmdID( m_nMenuMarkerID );
                if( nReplacePos < 0 )
                    break;
                pData->m_bMenuChanged = true;
                pPopup->ItemRemove( nReplacePos );
                INT nIndex, nCount = GetButtonsCount();
                for( nIndex = 0; nIndex < nCount; nIndex++ )
                {
                    CExtBarButton * pQueueTBB = GetButton( nIndex );
                    ASSERT_VALID( pQueueTBB );
                    CExtThemeSwitcherToolButton * pTBB =
                        DYNAMIC_DOWNCAST(
                            CExtThemeSwitcherToolButton,
                            pQueueTBB
                            );
                    if( pTBB == NULL )
                        continue;
                    ThemeSwitcher_OnButtonUpdate( pTBB );
                    pTBB->PutToPopupMenu( pPopup );
                }
            }
        }
    }
    return FALSE;
}