//---------------------------------------------------------------------------------------
void CBCGPAutoHideToolBar::OnLButtonDown(UINT nFlags, CPoint point) 
{
	CBCGPAutoHideButton* pBtn = CBCGPAutoHideToolBar::ButtonFromPoint (point);

	if (pBtn != NULL)
	{
		CBCGPDockingControlBar* pAttachedBar = pBtn->GetAutoHideWindow ();
		if (pAttachedBar != NULL)
		{
			BOOL bActivateOnClick = FALSE;
			
			CBCGPDockManager* pDockManager = globalUtils.GetDockManager (GetDockSite ());
			if (pDockManager != NULL)
			{
				ASSERT_VALID (pDockManager);
				bActivateOnClick = pDockManager->IsActivateAutoHideBarOnMouseClick();
			}

			if (bActivateOnClick)
			{
				pBtn->ShowAttachedWindow(!pAttachedBar->IsWindowVisible());
			}

			pAttachedBar->SetFocus ();
		}
	}
		
	CBCGPControlBar::OnLButtonDown(nFlags, point);
}
//-------------------------------------------------------------------------------//
void CBCGPAutoHideToolBar::OnMouseMove(UINT /*nFlags*/, CPoint /*point*/) 
{
	CPoint pt;
	GetCursorPos (&pt);
	ScreenToClient (&pt);
	CBCGPAutoHideButton* pBtn = ButtonFromPoint (pt);

	if (!m_bTracked)
	{
		m_bTracked = TRUE;
		
		TRACKMOUSEEVENT trackmouseevent;
		trackmouseevent.cbSize = sizeof(trackmouseevent);
		trackmouseevent.dwFlags = TME_LEAVE;
		trackmouseevent.hwndTrack = GetSafeHwnd();
		trackmouseevent.dwHoverTime = HOVER_DEFAULT;
		::BCGPTrackMouse (&trackmouseevent);	
	}

	if (pBtn != NULL && !m_bReadyToDisplayAHWnd)
	{
		CBCGPDockingControlBar* pAttachedBar = pBtn->GetAutoHideWindow ();
		ASSERT_VALID (pAttachedBar);

		if (!pAttachedBar->IsWindowVisible ())
		{
			if (m_nDisplayAHWndTimerID != 0)
			{
				KillTimer (m_nDisplayAHWndTimerID);
				m_nDisplayAHWndTimerID = 0;
			}

			BOOL bStartAutoHide = TRUE;

			CBCGPDockManager* pDockManager = globalUtils.GetDockManager (GetDockSite ());
			if (pDockManager != NULL)
			{
				ASSERT_VALID (pDockManager);
				bStartAutoHide = !pDockManager->IsActivateAutoHideBarOnMouseClick();
			}

			if (bStartAutoHide)
			{
				m_bReadyToDisplayAHWnd = TRUE;
				m_nDisplayAHWndTimerID = SetTimer(BCGP_DISPLAY_AHWND_EVENT, m_nShowAHWndDelay, NULL);
			}
		}

		if (m_pHighlightedButton != NULL && m_pHighlightedButton != pBtn)
		{
			ASSERT_VALID (m_pHighlightedButton);

			m_pHighlightedButton->HighlightButton (FALSE);
		}

		if (pBtn != m_pHighlightedButton)
		{
			pBtn->HighlightButton (TRUE);
			m_pHighlightedButton = pBtn;

			UpdateWindow ();
			Invalidate ();
		}
	}
}