//********************************************************************************
void CBCGPRibbonButtonsGroup::OnDraw (CDC* pDC)
{
	ASSERT_VALID (this);
	ASSERT_VALID (pDC);

	if (m_rect.IsRectEmpty ())
	{
		return;
	}

	//-----------------------
	// Fill group background:
	//-----------------------
	COLORREF clrText = 
		CBCGPVisualManager::GetInstance ()->OnDrawRibbonButtonsGroup (
		pDC, this, m_rect);

	COLORREF clrTextOld = (COLORREF)-1;
	if (clrText != (COLORREF)-1)
	{
		clrTextOld = pDC->SetTextColor (clrText);
	}

	for (int i = 0; i < m_arButtons.GetSize (); i++)
	{
		CBCGPBaseRibbonElement* pButton = m_arButtons [i];
		ASSERT_VALID (pButton);

		if (pButton->m_rect.IsRectEmpty ())
		{
			continue;
		}

		CString strText = pButton->m_strText;
		BOOL bIsDisabled = pButton->IsDisabled();

		if ((IsQAT() || m_bIsRibbonTabElements) && pButton->m_pRibbonBar != NULL && pButton->m_pRibbonBar->IsBackstageViewActive())
		{
			pButton->m_bIsDisabled = TRUE;
		}

		if (pButton->GetImageSize (CBCGPBaseRibbonElement::RibbonImageSmall) 
			!= CSize (0, 0))
		{
			pButton->m_strText.Empty ();
		}

		pButton->OnDraw (pDC);

		pButton->m_strText = strText;
		pButton->m_bIsDisabled = bIsDisabled;
	}

	if (clrTextOld != (COLORREF)-1)
	{
		pDC->SetTextColor (clrTextOld);
	}
}