diff options
Diffstat (limited to 'xfa/fwl/cfwl_eventtarget.cpp')
-rw-r--r-- | xfa/fwl/cfwl_eventtarget.cpp | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/xfa/fwl/cfwl_eventtarget.cpp b/xfa/fwl/cfwl_eventtarget.cpp new file mode 100644 index 0000000000..55f8e1fc78 --- /dev/null +++ b/xfa/fwl/cfwl_eventtarget.cpp @@ -0,0 +1,31 @@ +// Copyright 2016 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com + +#include "xfa/fwl/cfwl_eventtarget.h" + +#include "xfa/fwl/cfwl_widget.h" +#include "xfa/fwl/ifwl_widgetdelegate.h" + +CFWL_EventTarget::CFWL_EventTarget(CFWL_Widget* pListener) + : m_pListener(pListener), m_bInvalid(false) {} + +CFWL_EventTarget::~CFWL_EventTarget() {} + +void CFWL_EventTarget::SetEventSource(CFWL_Widget* pSource) { + if (pSource) + m_widgets.insert(pSource); +} + +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->m_pSrcTarget) == 0) + return false; + + pDelegate->OnProcessEvent(pEvent); + return true; +} |