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(); }
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; }
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 ); }