bool CFWL_EventTarget::ProcessEvent(CFWL_Event* pEvent) { IFWL_WidgetDelegate* pDelegate = m_pListener->GetDelegate(); if (!pDelegate) return false; if (!m_widgets.empty() && m_widgets.count(pEvent->GetSrcTarget()) == 0) return false; pDelegate->OnProcessEvent(pEvent); return true; }
FX_BOOL CFWL_EventTarget::ProcessEvent(CFWL_Event* pEvent) { IFWL_WidgetDelegate* pDelegate = m_pListener->SetDelegate(NULL); if (!pDelegate) return FALSE; if (m_eventSources.GetCount() == 0) { pDelegate->OnProcessEvent(pEvent); return TRUE; } FX_POSITION pos = m_eventSources.GetStartPosition(); while (pos) { IFWL_Widget* pSource = NULL; FX_DWORD dwFilter = 0; m_eventSources.GetNextAssoc(pos, (void*&)pSource, dwFilter); if (pSource == pEvent->m_pSrcTarget || pEvent->GetClassID() == FWL_EVTHASH_Idle) { if (IsFilterEvent(pEvent, dwFilter)) { pDelegate->OnProcessEvent(pEvent); return TRUE; } } } return FALSE; }