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 » 2.82: CExtControlBar::g_bCloseOnlyOneBarInTabGroup appears to not do anything. Collapse All
Subject Author Date
Kevin Murray Jun 19, 2008 - 5:48 PM

I even tried this in your sample app, MDI_DynamicInnerOuterBars.


In the CMainFrame::OnCreate I set CExtControlBar::g_bCloseOnlyOneBarInTabGroup to true.  If I dock two windows in a tab group, click the close button on one of them, both go away.

Is there something more that has to be done to support this functionality?


Kevin Murray


Technical Support Jun 22, 2008 - 1:12 PM

We confirm this issue. It’s related to CExtDynamicControlBar control bars only. To fix it, please update the source code for the following method:

void CExtDynamicControlBar::NcButtons_PostClick(
      CExtBarNcAreaButton * pNcAreaButton,
      CPoint point,
      CExtControlBar * pBarEventSource,
      CExtControlBar * pBarActiveInContainer
      )
{
      ASSERT_VALID( this );
#ifdef _DEBUG
      if( pBarEventSource != NULL )
      {
            ASSERT_VALID( pNcAreaButton );
      }
      if( pBarEventSource != NULL )
      {
            ASSERT_VALID( pBarEventSource );
      }
#endif // _DEBUG
      if( (! IsCloseOnlyOneBarInTabGroup() ) && pNcAreaButton->IsKindOf( RUNTIME_CLASS(CExtBarNcAreaButtonClose) ) )
      {
            bool bIsVisible = false;
            CExtDynamicControlBar::eDynamicBarState_t eDBS =
                  BarStateGet( &bIsVisible );
            if(         bIsVisible
                  &&    ( eDBS == CExtDynamicControlBar::__EDBS_DOCKED || eDBS == CExtDynamicControlBar::__EDBS_FLOATING )
                  )
                  BarStateSet( eDBS, false );
      }
      CExtControlBar::NcButtons_PostClick( pNcAreaButton, point, pBarEventSource, pBarActiveInContainer );
}