예제 #1
0
void CUploadsWnd::OnContextMenu(CWnd* pWnd, CPoint point)
{
	CSingleLock pLock( &Transfers.m_pSection, TRUE );
	CUploadQueue* pQueue;
	CUploadFile* pUpload;

	CPoint ptLocal( point );
	m_wndUploads.ScreenToClient( &ptLocal );
	m_tSel = 0;

	if ( m_wndUploads.HitTest( ptLocal, &pQueue, &pUpload, NULL, NULL ) )
	{
		if ( pUpload != NULL )
		{
			pLock.Unlock();
			TrackPopupMenu( _T("CUploadsWnd.Upload"), point, ID_UPLOADS_LAUNCH );
			return;
		}
	}

	if( ( pQueue == NULL ) || ( Settings.General.GUIMode == GUI_BASIC ) ||		//If we're not pointing at a queue, or in basic mode
		( pQueue == UploadQueues.m_pHistoryQueue ) || ( pQueue == UploadQueues.m_pTorrentQueue ) )	//Or pointing at a pre-defined queue
		TrackPopupMenu( _T("CUploadsWnd.Nothing"), point, ID_UPLOADS_HELP );
	else
		TrackPopupMenu( _T("CUploadsWnd.Queue"), point, ID_UPLOADS_EDIT_QUEUE );

	pLock.Unlock();
}
예제 #2
0
BOOL CVisualNode::HitTest(CVisualPoint & pt, CVisualObject ** ppObj)
{
    size_t n;
    CVisualPoint ptLocal(pt);

    ptLocal.Sub(m_Rect.x(), m_Rect.y());

    // first check if we hit any pin
    for(n = 0; n < m_InputPins.GetCount(); n++)
    {
        if(m_InputPins.GetAt(n)->Rect().IsIn(ptLocal))
        {
            *ppObj = m_InputPins.GetAt(n);
            return TRUE;
        }
    }

    for(n = 0; n < m_OutputPins.GetCount(); n++)
    {
        if(m_OutputPins.GetAt(n)->Rect().IsIn(ptLocal))
        {
            *ppObj = m_OutputPins.GetAt(n);
            return TRUE;
        }
    }
    
    if(m_Rect.IsIn(pt))
    {   
        (*ppObj) = this;
        return TRUE;
    }

    return FALSE;
}
예제 #3
0
void CUploadsWnd::OnContextMenu(CWnd* /*pWnd*/, CPoint point)
{
	if ( point.x == -1 && point.y == -1 )	// Keyboard fix
	{
		m_wndUploads.ClientToScreen( &point );
		Skin.TrackPopupMenu( _T("CUploadsWnd.Default"), point, ID_UPLOADS_HELP );
		return;
	}

	CPoint ptLocal( point );
	m_wndUploads.ScreenToClient( &ptLocal );
	m_tSel = 0;

	BOOL bHit = FALSE;

	CSingleLock pLock( &Transfers.m_pSection, FALSE );
	if ( pLock.Lock( 250 ) )
	{
		CUploadFile* pUpload;
		if ( m_wndUploads.HitTest( ptLocal, NULL, &pUpload, NULL, NULL ) && pUpload != NULL )
			bHit = TRUE;
		pLock.Unlock();
	}

	if ( bHit )
		Skin.TrackPopupMenu( _T("CUploadsWnd.Upload"), point, ID_UPLOADS_LAUNCH );
	else
		Skin.TrackPopupMenu( _T("CUploadsWnd.Default"), point, ID_UPLOADS_HELP );
}