| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "xfa/fwl/core/cfwl_notedriver.h" | 7 #include "xfa/fwl/core/cfwl_notedriver.h" |
| 8 | 8 |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 77 CFWL_NoteLoop* CFWL_NoteDriver::PopNoteLoop() { | 77 CFWL_NoteLoop* CFWL_NoteDriver::PopNoteLoop() { |
| 78 int32_t pos = m_noteLoopQueue.GetSize(); | 78 int32_t pos = m_noteLoopQueue.GetSize(); |
| 79 if (pos <= 0) | 79 if (pos <= 0) |
| 80 return nullptr; | 80 return nullptr; |
| 81 | 81 |
| 82 CFWL_NoteLoop* p = m_noteLoopQueue.GetAt(pos - 1); | 82 CFWL_NoteLoop* p = m_noteLoopQueue.GetAt(pos - 1); |
| 83 m_noteLoopQueue.RemoveAt(pos - 1); | 83 m_noteLoopQueue.RemoveAt(pos - 1); |
| 84 return p; | 84 return p; |
| 85 } | 85 } |
| 86 | 86 |
| 87 bool CFWL_NoteDriver::SetFocus(CFWL_Widget* pFocus, bool bNotify) { | 87 bool CFWL_NoteDriver::SetFocus(CFWL_Widget* pFocus) { |
| 88 if (m_pFocus == pFocus) | 88 if (m_pFocus == pFocus) |
| 89 return true; | 89 return true; |
| 90 | 90 |
| 91 CFWL_Widget* pPrev = m_pFocus; | 91 CFWL_Widget* pPrev = m_pFocus; |
| 92 m_pFocus = pFocus; | 92 m_pFocus = pFocus; |
| 93 if (pPrev) { | 93 if (pPrev) { |
| 94 CFWL_MsgKillFocus ms(pPrev, pPrev); | 94 if (IFWL_WidgetDelegate* pDelegate = pPrev->GetDelegate()) { |
| 95 if (bNotify) | 95 CFWL_MsgKillFocus ms(pPrev, pPrev); |
| 96 ms.m_dwExtend = 1; | |
| 97 | |
| 98 if (IFWL_WidgetDelegate* pDelegate = pPrev->GetDelegate()) | |
| 99 pDelegate->OnProcessMessage(&ms); | 96 pDelegate->OnProcessMessage(&ms); |
| 97 } |
| 100 } | 98 } |
| 101 if (pFocus) { | 99 if (pFocus) { |
| 102 CFWL_Widget* pWidget = | 100 CFWL_Widget* pWidget = |
| 103 pFocus->GetOwnerApp()->GetWidgetMgr()->GetSystemFormWidget(pFocus); | 101 pFocus->GetOwnerApp()->GetWidgetMgr()->GetSystemFormWidget(pFocus); |
| 104 CFWL_Form* pForm = static_cast<CFWL_Form*>(pWidget); | 102 CFWL_Form* pForm = static_cast<CFWL_Form*>(pWidget); |
| 105 if (pForm) | 103 if (pForm) |
| 106 pForm->SetSubFocus(pFocus); | 104 pForm->SetSubFocus(pFocus); |
| 107 | 105 |
| 108 CFWL_MsgSetFocus ms(nullptr, pFocus); | 106 if (IFWL_WidgetDelegate* pDelegate = pFocus->GetDelegate()) { |
| 109 if (bNotify) | 107 CFWL_MsgSetFocus ms(nullptr, pFocus); |
| 110 ms.m_dwExtend = 1; | |
| 111 if (IFWL_WidgetDelegate* pDelegate = pFocus->GetDelegate()) | |
| 112 pDelegate->OnProcessMessage(&ms); | 108 pDelegate->OnProcessMessage(&ms); |
| 109 } |
| 113 } | 110 } |
| 114 return true; | 111 return true; |
| 115 } | 112 } |
| 116 | 113 |
| 117 void CFWL_NoteDriver::Run() { | 114 void CFWL_NoteDriver::Run() { |
| 118 #if (_FX_OS_ == _FX_LINUX_DESKTOP_ || _FX_OS_ == _FX_WIN32_DESKTOP_ || \ | 115 #if (_FX_OS_ == _FX_LINUX_DESKTOP_ || _FX_OS_ == _FX_WIN32_DESKTOP_ || \ |
| 119 _FX_OS_ == _FX_WIN64_) | 116 _FX_OS_ == _FX_WIN64_) |
| 120 for (;;) { | 117 for (;;) { |
| 121 CFWL_NoteLoop* pTopLoop = GetTopLoop(); | 118 CFWL_NoteLoop* pTopLoop = GetTopLoop(); |
| 122 if (!pTopLoop || !pTopLoop->ContinueModal()) | 119 if (!pTopLoop || !pTopLoop->ContinueModal()) |
| (...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 474 void CFWL_NoteDriver::ClearEventTargets(bool bRemoveAll) { | 471 void CFWL_NoteDriver::ClearEventTargets(bool bRemoveAll) { |
| 475 auto it = m_eventTargets.begin(); | 472 auto it = m_eventTargets.begin(); |
| 476 while (it != m_eventTargets.end()) { | 473 while (it != m_eventTargets.end()) { |
| 477 auto old = it++; | 474 auto old = it++; |
| 478 if (old->second && (bRemoveAll || old->second->IsInvalid())) { | 475 if (old->second && (bRemoveAll || old->second->IsInvalid())) { |
| 479 delete old->second; | 476 delete old->second; |
| 480 m_eventTargets.erase(old); | 477 m_eventTargets.erase(old); |
| 481 } | 478 } |
| 482 } | 479 } |
| 483 } | 480 } |
| OLD | NEW |