| Index: xfa/fwl/core/fwl_noteimp.cpp
|
| diff --git a/xfa/fwl/core/fwl_noteimp.cpp b/xfa/fwl/core/fwl_noteimp.cpp
|
| index 70999d5f850c16ee4aa90b0b7bde60f5477abce5..c17105a3f73ffe023b182308454a7ca4354a0802 100644
|
| --- a/xfa/fwl/core/fwl_noteimp.cpp
|
| +++ b/xfa/fwl/core/fwl_noteimp.cpp
|
| @@ -7,71 +7,24 @@
|
| #include "xfa/fwl/core/fwl_noteimp.h"
|
|
|
| #include "core/fxcrt/fx_ext.h"
|
| +#include "third_party/base/ptr_util.h"
|
| #include "third_party/base/stl_util.h"
|
| #include "xfa/fwl/core/cfwl_message.h"
|
| #include "xfa/fwl/core/cfwl_widgetmgr.h"
|
| #include "xfa/fwl/core/ifwl_app.h"
|
| #include "xfa/fwl/core/ifwl_tooltip.h"
|
|
|
| -CFWL_NoteLoop::CFWL_NoteLoop(IFWL_Widget* pForm)
|
| - : m_pForm(pForm), m_bContinueModal(true) {}
|
| +CFWL_NoteLoop::CFWL_NoteLoop() : m_bContinueModal(true) {}
|
|
|
| -FWL_Error CFWL_NoteLoop::Idle(int32_t count) {
|
| -#if (_FX_OS_ == _FX_WIN32_DESKTOP_)
|
| - if (count <= 0) {
|
| -#endif
|
| - CFWL_EvtIdle ev;
|
| - const IFWL_App* pApp = m_pForm->GetOwnerApp();
|
| - if (!pApp)
|
| - return FWL_Error::Indefinite;
|
| -
|
| - CFWL_NoteDriver* pDriver = pApp->GetNoteDriver();
|
| - if (!pDriver)
|
| - return FWL_Error::Indefinite;
|
| -
|
| - pDriver->SendEvent(&ev);
|
| -#if (_FX_OS_ == _FX_WIN32_DESKTOP_)
|
| - }
|
| -#endif
|
| - return FWL_Error::Indefinite;
|
| -}
|
| -IFWL_Widget* CFWL_NoteLoop::GetForm() {
|
| - return m_pForm;
|
| -}
|
| -bool CFWL_NoteLoop::ContinueModal() {
|
| - return m_bContinueModal;
|
| -}
|
| -FWL_Error CFWL_NoteLoop::EndModalLoop() {
|
| - m_bContinueModal = false;
|
| - return FWL_Error::Succeeded;
|
| -}
|
| -
|
| -FWL_Error CFWL_NoteLoop::SetMainForm(IFWL_Widget* pForm) {
|
| - m_pForm = pForm;
|
| - return FWL_Error::Succeeded;
|
| -}
|
| -void CFWL_NoteLoop::GenerateCommondEvent(uint32_t dwCommand) {
|
| - CFWL_EvtMenuCommand ev;
|
| - ev.m_iCommand = dwCommand;
|
| - const IFWL_App* pApp = m_pForm->GetOwnerApp();
|
| - if (!pApp)
|
| - return;
|
| -
|
| - CFWL_NoteDriver* pDriver = pApp->GetNoteDriver();
|
| - if (!pDriver)
|
| - return;
|
| -
|
| - pDriver->SendEvent(&ev);
|
| -}
|
| CFWL_NoteDriver::CFWL_NoteDriver()
|
| : m_pHover(nullptr),
|
| m_pFocus(nullptr),
|
| m_pGrab(nullptr),
|
| - m_pNoteLoop(new CFWL_NoteLoop) {
|
| + m_pNoteLoop(pdfium::MakeUnique<CFWL_NoteLoop>()) {
|
| PushNoteLoop(m_pNoteLoop.get());
|
| }
|
| CFWL_NoteDriver::~CFWL_NoteDriver() {
|
| - ClearInvalidEventTargets(true);
|
| + ClearEventTargets(true);
|
| }
|
|
|
| void CFWL_NoteDriver::SendEvent(CFWL_Event* pNote) {
|
| @@ -85,9 +38,9 @@ void CFWL_NoteDriver::SendEvent(CFWL_Event* pNote) {
|
| }
|
| }
|
|
|
| -FWL_Error CFWL_NoteDriver::RegisterEventTarget(IFWL_Widget* pListener,
|
| - IFWL_Widget* pEventSource,
|
| - uint32_t dwFilter) {
|
| +void CFWL_NoteDriver::RegisterEventTarget(IFWL_Widget* pListener,
|
| + IFWL_Widget* pEventSource,
|
| + uint32_t dwFilter) {
|
| uint32_t key = pListener->GetEventKey();
|
| if (key == 0) {
|
| do {
|
| @@ -96,32 +49,25 @@ FWL_Error CFWL_NoteDriver::RegisterEventTarget(IFWL_Widget* pListener,
|
| pListener->SetEventKey(key);
|
| }
|
| if (!m_eventTargets[key])
|
| - m_eventTargets[key] = new CFWL_EventTarget(this, pListener);
|
| + m_eventTargets[key] = new CFWL_EventTarget(pListener);
|
|
|
| m_eventTargets[key]->SetEventSource(pEventSource, dwFilter);
|
| - return FWL_Error::Succeeded;
|
| }
|
|
|
| -FWL_Error CFWL_NoteDriver::UnregisterEventTarget(IFWL_Widget* pListener) {
|
| +void CFWL_NoteDriver::UnregisterEventTarget(IFWL_Widget* pListener) {
|
| uint32_t key = pListener->GetEventKey();
|
| if (key == 0)
|
| - return FWL_Error::Indefinite;
|
| + return;
|
|
|
| auto it = m_eventTargets.find(key);
|
| if (it != m_eventTargets.end())
|
| it->second->FlagInvalid();
|
| -
|
| - return FWL_Error::Succeeded;
|
| -}
|
| -
|
| -void CFWL_NoteDriver::ClearEventTargets(bool bRemoveAll) {
|
| - ClearInvalidEventTargets(bRemoveAll);
|
| }
|
|
|
| -FWL_Error CFWL_NoteDriver::PushNoteLoop(CFWL_NoteLoop* pNoteLoop) {
|
| +void CFWL_NoteDriver::PushNoteLoop(CFWL_NoteLoop* pNoteLoop) {
|
| m_noteLoopQueue.Add(pNoteLoop);
|
| - return FWL_Error::Succeeded;
|
| }
|
| +
|
| CFWL_NoteLoop* CFWL_NoteDriver::PopNoteLoop() {
|
| int32_t pos = m_noteLoopQueue.GetSize();
|
| if (pos <= 0)
|
| @@ -165,7 +111,8 @@ bool CFWL_NoteDriver::SetFocus(IFWL_Widget* pFocus, bool bNotify) {
|
| }
|
| return true;
|
| }
|
| -FWL_Error CFWL_NoteDriver::Run() {
|
| +
|
| +void CFWL_NoteDriver::Run() {
|
| #if (_FX_OS_ == _FX_LINUX_DESKTOP_ || _FX_OS_ == _FX_WIN32_DESKTOP_ || \
|
| _FX_OS_ == _FX_WIN64_)
|
| CFWL_NoteLoop* pTopLoop = nullptr;
|
| @@ -177,22 +124,8 @@ FWL_Error CFWL_NoteDriver::Run() {
|
| continue;
|
| }
|
| #endif
|
| -
|
| - return FWL_Error::Succeeded;
|
| }
|
|
|
| -IFWL_Widget* CFWL_NoteDriver::GetFocus() {
|
| - return m_pFocus;
|
| -}
|
| -IFWL_Widget* CFWL_NoteDriver::GetHover() {
|
| - return m_pHover;
|
| -}
|
| -void CFWL_NoteDriver::SetHover(IFWL_Widget* pHover) {
|
| - m_pHover = pHover;
|
| -}
|
| -void CFWL_NoteDriver::SetGrab(IFWL_Widget* pGrab, bool bSet) {
|
| - m_pGrab = bSet ? pGrab : nullptr;
|
| -}
|
| void CFWL_NoteDriver::NotifyTargetHide(IFWL_Widget* pNoteTarget) {
|
| if (m_pFocus == pNoteTarget) {
|
| m_pFocus = nullptr;
|
| @@ -230,31 +163,27 @@ void CFWL_NoteDriver::NotifyTargetDestroy(IFWL_Widget* pNoteTarget) {
|
| }
|
| }
|
|
|
| -FWL_Error CFWL_NoteDriver::RegisterForm(IFWL_Widget* pForm) {
|
| - if (!pForm)
|
| - return FWL_Error::Indefinite;
|
| - if (m_forms.Find(pForm) >= 0) {
|
| - return FWL_Error::Indefinite;
|
| - }
|
| +void CFWL_NoteDriver::RegisterForm(IFWL_Widget* pForm) {
|
| + if (!pForm || m_forms.Find(pForm) >= 0)
|
| + return;
|
| +
|
| m_forms.Add(pForm);
|
| if (m_forms.GetSize() == 1) {
|
| CFWL_NoteLoop* pLoop =
|
| static_cast<CFWL_NoteLoop*>(m_noteLoopQueue.GetAt(0));
|
| if (!pLoop)
|
| - return FWL_Error::Indefinite;
|
| + return;
|
| pLoop->SetMainForm(pForm);
|
| }
|
| - return FWL_Error::Succeeded;
|
| }
|
| -FWL_Error CFWL_NoteDriver::UnRegisterForm(IFWL_Widget* pForm) {
|
| +
|
| +void CFWL_NoteDriver::UnRegisterForm(IFWL_Widget* pForm) {
|
| if (!pForm)
|
| - return FWL_Error::Indefinite;
|
| + return;
|
| int32_t nIndex = m_forms.Find(pForm);
|
| - if (nIndex < 0) {
|
| - return FWL_Error::Indefinite;
|
| - }
|
| + if (nIndex < 0)
|
| + return;
|
| m_forms.RemoveAt(nIndex);
|
| - return FWL_Error::Succeeded;
|
| }
|
| bool CFWL_NoteDriver::QueueMessage(CFWL_Message* pMessage) {
|
| pMessage->Retain();
|
| @@ -276,15 +205,12 @@ bool CFWL_NoteDriver::UnqueueMessage(CFWL_NoteLoop* pNoteLoop) {
|
| pMessage->Release();
|
| return true;
|
| }
|
| -CFWL_NoteLoop* CFWL_NoteDriver::GetTopLoop() {
|
| +CFWL_NoteLoop* CFWL_NoteDriver::GetTopLoop() const {
|
| int32_t size = m_noteLoopQueue.GetSize();
|
| if (size <= 0)
|
| return nullptr;
|
| return static_cast<CFWL_NoteLoop*>(m_noteLoopQueue[size - 1]);
|
| }
|
| -int32_t CFWL_NoteDriver::CountLoop() {
|
| - return m_noteLoopQueue.GetSize();
|
| -}
|
|
|
| bool CFWL_NoteDriver::ProcessMessage(CFWL_Message* pMessage) {
|
| CFWL_WidgetMgr* pWidgetMgr =
|
| @@ -626,7 +552,7 @@ IFWL_Widget* CFWL_NoteDriver::GetMessageForm(IFWL_Widget* pDstTarget) {
|
| return pMessageForm;
|
| }
|
|
|
| -void CFWL_NoteDriver::ClearInvalidEventTargets(bool bRemoveAll) {
|
| +void CFWL_NoteDriver::ClearEventTargets(bool bRemoveAll) {
|
| auto it = m_eventTargets.begin();
|
| while (it != m_eventTargets.end()) {
|
| auto old = it++;
|
| @@ -637,9 +563,8 @@ void CFWL_NoteDriver::ClearInvalidEventTargets(bool bRemoveAll) {
|
| }
|
| }
|
|
|
| -CFWL_EventTarget::CFWL_EventTarget(CFWL_NoteDriver* pNoteDriver,
|
| - IFWL_Widget* pListener)
|
| - : m_pListener(pListener), m_pNoteDriver(pNoteDriver), m_bInvalid(false) {}
|
| +CFWL_EventTarget::CFWL_EventTarget(IFWL_Widget* pListener)
|
| + : m_pListener(pListener), m_bInvalid(false) {}
|
| CFWL_EventTarget::~CFWL_EventTarget() {
|
| m_eventSources.RemoveAll();
|
| }
|
| @@ -677,7 +602,8 @@ bool CFWL_EventTarget::ProcessEvent(CFWL_Event* pEvent) {
|
| return false;
|
| }
|
|
|
| -bool CFWL_EventTarget::IsFilterEvent(CFWL_Event* pEvent, uint32_t dwFilter) {
|
| +bool CFWL_EventTarget::IsFilterEvent(CFWL_Event* pEvent,
|
| + uint32_t dwFilter) const {
|
| if (dwFilter == FWL_EVENT_ALL_MASK)
|
| return true;
|
|
|
| @@ -703,50 +629,3 @@ bool CFWL_EventTarget::IsFilterEvent(CFWL_Event* pEvent, uint32_t dwFilter) {
|
| return !!(dwFilter & FWL_EVENT_CONTROL_MASK);
|
| }
|
| }
|
| -
|
| -CFWL_ToolTipContainer* CFWL_ToolTipContainer::s_pInstance = nullptr;
|
| -
|
| -CFWL_ToolTipContainer::CFWL_ToolTipContainer()
|
| - : m_nInitDelayTime(0), m_nAutoPopDelayTime(2000) {
|
| - m_fAnchor.Set(0.0, 0.0, 0.0, 0.0);
|
| -}
|
| -
|
| -CFWL_ToolTipContainer::~CFWL_ToolTipContainer() {}
|
| -
|
| -void CFWL_ToolTipContainer::GetCaption(IFWL_Widget* pWidget,
|
| - CFX_WideString& wsCaption) {
|
| - wsCaption = m_wsCaption;
|
| -}
|
| -
|
| -int32_t CFWL_ToolTipContainer::GetInitialDelay(IFWL_Widget* pWidget) {
|
| - return m_nInitDelayTime;
|
| -}
|
| -
|
| -int32_t CFWL_ToolTipContainer::GetAutoPopDelay(IFWL_Widget* pWidget) {
|
| - return m_nAutoPopDelayTime;
|
| -}
|
| -
|
| -CFX_DIBitmap* CFWL_ToolTipContainer::GetToolTipIcon(IFWL_Widget* pWidget) {
|
| - return nullptr;
|
| -}
|
| -
|
| -CFX_SizeF CFWL_ToolTipContainer::GetToolTipIconSize(IFWL_Widget* pWidget) {
|
| - return CFX_SizeF();
|
| -}
|
| -
|
| -CFX_RectF CFWL_ToolTipContainer::GetAnchor() {
|
| - return m_fAnchor;
|
| -}
|
| -
|
| -// static
|
| -CFWL_ToolTipContainer* CFWL_ToolTipContainer::getInstance() {
|
| - if (!s_pInstance)
|
| - s_pInstance = new CFWL_ToolTipContainer;
|
| - return s_pInstance;
|
| -}
|
| -
|
| -// static
|
| -void CFWL_ToolTipContainer::DeleteInstance() {
|
| - delete s_pInstance;
|
| - s_pInstance = nullptr;
|
| -}
|
|
|