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/fwl_noteimp.h" | 7 #include "xfa/fwl/core/fwl_noteimp.h" |
8 | 8 |
9 #include "core/fxcrt/fx_ext.h" | 9 #include "core/fxcrt/fx_ext.h" |
| 10 #include "third_party/base/ptr_util.h" |
10 #include "third_party/base/stl_util.h" | 11 #include "third_party/base/stl_util.h" |
11 #include "xfa/fwl/core/cfwl_message.h" | 12 #include "xfa/fwl/core/cfwl_message.h" |
12 #include "xfa/fwl/core/cfwl_widgetmgr.h" | 13 #include "xfa/fwl/core/cfwl_widgetmgr.h" |
13 #include "xfa/fwl/core/ifwl_app.h" | 14 #include "xfa/fwl/core/ifwl_app.h" |
14 #include "xfa/fwl/core/ifwl_tooltip.h" | 15 #include "xfa/fwl/core/ifwl_tooltip.h" |
15 | 16 |
16 CFWL_NoteLoop::CFWL_NoteLoop(IFWL_Widget* pForm) | 17 CFWL_NoteLoop::CFWL_NoteLoop() : m_bContinueModal(true) {} |
17 : m_pForm(pForm), m_bContinueModal(true) {} | |
18 | 18 |
19 FWL_Error CFWL_NoteLoop::Idle(int32_t count) { | |
20 #if (_FX_OS_ == _FX_WIN32_DESKTOP_) | |
21 if (count <= 0) { | |
22 #endif | |
23 CFWL_EvtIdle ev; | |
24 const IFWL_App* pApp = m_pForm->GetOwnerApp(); | |
25 if (!pApp) | |
26 return FWL_Error::Indefinite; | |
27 | |
28 CFWL_NoteDriver* pDriver = pApp->GetNoteDriver(); | |
29 if (!pDriver) | |
30 return FWL_Error::Indefinite; | |
31 | |
32 pDriver->SendEvent(&ev); | |
33 #if (_FX_OS_ == _FX_WIN32_DESKTOP_) | |
34 } | |
35 #endif | |
36 return FWL_Error::Indefinite; | |
37 } | |
38 IFWL_Widget* CFWL_NoteLoop::GetForm() { | |
39 return m_pForm; | |
40 } | |
41 bool CFWL_NoteLoop::ContinueModal() { | |
42 return m_bContinueModal; | |
43 } | |
44 FWL_Error CFWL_NoteLoop::EndModalLoop() { | |
45 m_bContinueModal = false; | |
46 return FWL_Error::Succeeded; | |
47 } | |
48 | |
49 FWL_Error CFWL_NoteLoop::SetMainForm(IFWL_Widget* pForm) { | |
50 m_pForm = pForm; | |
51 return FWL_Error::Succeeded; | |
52 } | |
53 void CFWL_NoteLoop::GenerateCommondEvent(uint32_t dwCommand) { | |
54 CFWL_EvtMenuCommand ev; | |
55 ev.m_iCommand = dwCommand; | |
56 const IFWL_App* pApp = m_pForm->GetOwnerApp(); | |
57 if (!pApp) | |
58 return; | |
59 | |
60 CFWL_NoteDriver* pDriver = pApp->GetNoteDriver(); | |
61 if (!pDriver) | |
62 return; | |
63 | |
64 pDriver->SendEvent(&ev); | |
65 } | |
66 CFWL_NoteDriver::CFWL_NoteDriver() | 19 CFWL_NoteDriver::CFWL_NoteDriver() |
67 : m_pHover(nullptr), | 20 : m_pHover(nullptr), |
68 m_pFocus(nullptr), | 21 m_pFocus(nullptr), |
69 m_pGrab(nullptr), | 22 m_pGrab(nullptr), |
70 m_pNoteLoop(new CFWL_NoteLoop) { | 23 m_pNoteLoop(pdfium::MakeUnique<CFWL_NoteLoop>()) { |
71 PushNoteLoop(m_pNoteLoop.get()); | 24 PushNoteLoop(m_pNoteLoop.get()); |
72 } | 25 } |
73 CFWL_NoteDriver::~CFWL_NoteDriver() { | 26 CFWL_NoteDriver::~CFWL_NoteDriver() { |
74 ClearInvalidEventTargets(true); | 27 ClearEventTargets(true); |
75 } | 28 } |
76 | 29 |
77 void CFWL_NoteDriver::SendEvent(CFWL_Event* pNote) { | 30 void CFWL_NoteDriver::SendEvent(CFWL_Event* pNote) { |
78 if (m_eventTargets.empty()) | 31 if (m_eventTargets.empty()) |
79 return; | 32 return; |
80 | 33 |
81 for (const auto& pair : m_eventTargets) { | 34 for (const auto& pair : m_eventTargets) { |
82 CFWL_EventTarget* pEventTarget = pair.second; | 35 CFWL_EventTarget* pEventTarget = pair.second; |
83 if (pEventTarget && !pEventTarget->IsInvalid()) | 36 if (pEventTarget && !pEventTarget->IsInvalid()) |
84 pEventTarget->ProcessEvent(pNote); | 37 pEventTarget->ProcessEvent(pNote); |
85 } | 38 } |
86 } | 39 } |
87 | 40 |
88 FWL_Error CFWL_NoteDriver::RegisterEventTarget(IFWL_Widget* pListener, | 41 void CFWL_NoteDriver::RegisterEventTarget(IFWL_Widget* pListener, |
89 IFWL_Widget* pEventSource, | 42 IFWL_Widget* pEventSource, |
90 uint32_t dwFilter) { | 43 uint32_t dwFilter) { |
91 uint32_t key = pListener->GetEventKey(); | 44 uint32_t key = pListener->GetEventKey(); |
92 if (key == 0) { | 45 if (key == 0) { |
93 do { | 46 do { |
94 key = rand(); | 47 key = rand(); |
95 } while (key == 0 || pdfium::ContainsKey(m_eventTargets, key)); | 48 } while (key == 0 || pdfium::ContainsKey(m_eventTargets, key)); |
96 pListener->SetEventKey(key); | 49 pListener->SetEventKey(key); |
97 } | 50 } |
98 if (!m_eventTargets[key]) | 51 if (!m_eventTargets[key]) |
99 m_eventTargets[key] = new CFWL_EventTarget(this, pListener); | 52 m_eventTargets[key] = new CFWL_EventTarget(pListener); |
100 | 53 |
101 m_eventTargets[key]->SetEventSource(pEventSource, dwFilter); | 54 m_eventTargets[key]->SetEventSource(pEventSource, dwFilter); |
102 return FWL_Error::Succeeded; | |
103 } | 55 } |
104 | 56 |
105 FWL_Error CFWL_NoteDriver::UnregisterEventTarget(IFWL_Widget* pListener) { | 57 void CFWL_NoteDriver::UnregisterEventTarget(IFWL_Widget* pListener) { |
106 uint32_t key = pListener->GetEventKey(); | 58 uint32_t key = pListener->GetEventKey(); |
107 if (key == 0) | 59 if (key == 0) |
108 return FWL_Error::Indefinite; | 60 return; |
109 | 61 |
110 auto it = m_eventTargets.find(key); | 62 auto it = m_eventTargets.find(key); |
111 if (it != m_eventTargets.end()) | 63 if (it != m_eventTargets.end()) |
112 it->second->FlagInvalid(); | 64 it->second->FlagInvalid(); |
113 | |
114 return FWL_Error::Succeeded; | |
115 } | 65 } |
116 | 66 |
117 void CFWL_NoteDriver::ClearEventTargets(bool bRemoveAll) { | 67 void CFWL_NoteDriver::PushNoteLoop(CFWL_NoteLoop* pNoteLoop) { |
118 ClearInvalidEventTargets(bRemoveAll); | 68 m_noteLoopQueue.Add(pNoteLoop); |
119 } | 69 } |
120 | 70 |
121 FWL_Error CFWL_NoteDriver::PushNoteLoop(CFWL_NoteLoop* pNoteLoop) { | |
122 m_noteLoopQueue.Add(pNoteLoop); | |
123 return FWL_Error::Succeeded; | |
124 } | |
125 CFWL_NoteLoop* CFWL_NoteDriver::PopNoteLoop() { | 71 CFWL_NoteLoop* CFWL_NoteDriver::PopNoteLoop() { |
126 int32_t pos = m_noteLoopQueue.GetSize(); | 72 int32_t pos = m_noteLoopQueue.GetSize(); |
127 if (pos <= 0) | 73 if (pos <= 0) |
128 return nullptr; | 74 return nullptr; |
129 | 75 |
130 CFWL_NoteLoop* p = m_noteLoopQueue.GetAt(pos - 1); | 76 CFWL_NoteLoop* p = m_noteLoopQueue.GetAt(pos - 1); |
131 m_noteLoopQueue.RemoveAt(pos - 1); | 77 m_noteLoopQueue.RemoveAt(pos - 1); |
132 return p; | 78 return p; |
133 } | 79 } |
134 bool CFWL_NoteDriver::SetFocus(IFWL_Widget* pFocus, bool bNotify) { | 80 bool CFWL_NoteDriver::SetFocus(IFWL_Widget* pFocus, bool bNotify) { |
(...skipping 23 matching lines...) Expand all Loading... |
158 ms.m_pDstTarget = pFocus; | 104 ms.m_pDstTarget = pFocus; |
159 if (bNotify) { | 105 if (bNotify) { |
160 ms.m_dwExtend = 1; | 106 ms.m_dwExtend = 1; |
161 } | 107 } |
162 | 108 |
163 if (IFWL_WidgetDelegate* pDelegate = pFocus->GetDelegate()) | 109 if (IFWL_WidgetDelegate* pDelegate = pFocus->GetDelegate()) |
164 pDelegate->OnProcessMessage(&ms); | 110 pDelegate->OnProcessMessage(&ms); |
165 } | 111 } |
166 return true; | 112 return true; |
167 } | 113 } |
168 FWL_Error CFWL_NoteDriver::Run() { | 114 |
| 115 void CFWL_NoteDriver::Run() { |
169 #if (_FX_OS_ == _FX_LINUX_DESKTOP_ || _FX_OS_ == _FX_WIN32_DESKTOP_ || \ | 116 #if (_FX_OS_ == _FX_LINUX_DESKTOP_ || _FX_OS_ == _FX_WIN32_DESKTOP_ || \ |
170 _FX_OS_ == _FX_WIN64_) | 117 _FX_OS_ == _FX_WIN64_) |
171 CFWL_NoteLoop* pTopLoop = nullptr; | 118 CFWL_NoteLoop* pTopLoop = nullptr; |
172 for (;;) { | 119 for (;;) { |
173 pTopLoop = GetTopLoop(); | 120 pTopLoop = GetTopLoop(); |
174 if (!pTopLoop || !pTopLoop->ContinueModal()) | 121 if (!pTopLoop || !pTopLoop->ContinueModal()) |
175 break; | 122 break; |
176 if (UnqueueMessage(pTopLoop)) | 123 if (UnqueueMessage(pTopLoop)) |
177 continue; | 124 continue; |
178 } | 125 } |
179 #endif | 126 #endif |
180 | |
181 return FWL_Error::Succeeded; | |
182 } | 127 } |
183 | 128 |
184 IFWL_Widget* CFWL_NoteDriver::GetFocus() { | |
185 return m_pFocus; | |
186 } | |
187 IFWL_Widget* CFWL_NoteDriver::GetHover() { | |
188 return m_pHover; | |
189 } | |
190 void CFWL_NoteDriver::SetHover(IFWL_Widget* pHover) { | |
191 m_pHover = pHover; | |
192 } | |
193 void CFWL_NoteDriver::SetGrab(IFWL_Widget* pGrab, bool bSet) { | |
194 m_pGrab = bSet ? pGrab : nullptr; | |
195 } | |
196 void CFWL_NoteDriver::NotifyTargetHide(IFWL_Widget* pNoteTarget) { | 129 void CFWL_NoteDriver::NotifyTargetHide(IFWL_Widget* pNoteTarget) { |
197 if (m_pFocus == pNoteTarget) { | 130 if (m_pFocus == pNoteTarget) { |
198 m_pFocus = nullptr; | 131 m_pFocus = nullptr; |
199 } | 132 } |
200 if (m_pHover == pNoteTarget) { | 133 if (m_pHover == pNoteTarget) { |
201 m_pHover = nullptr; | 134 m_pHover = nullptr; |
202 } | 135 } |
203 if (m_pGrab == pNoteTarget) { | 136 if (m_pGrab == pNoteTarget) { |
204 m_pGrab = nullptr; | 137 m_pGrab = nullptr; |
205 } | 138 } |
(...skipping 17 matching lines...) Expand all Loading... |
223 } | 156 } |
224 IFWL_Widget* pSubFocus = pForm->GetSubFocus(); | 157 IFWL_Widget* pSubFocus = pForm->GetSubFocus(); |
225 if (!pSubFocus) | 158 if (!pSubFocus) |
226 return; | 159 return; |
227 if (pSubFocus == pNoteTarget) { | 160 if (pSubFocus == pNoteTarget) { |
228 pForm->SetSubFocus(nullptr); | 161 pForm->SetSubFocus(nullptr); |
229 } | 162 } |
230 } | 163 } |
231 } | 164 } |
232 | 165 |
233 FWL_Error CFWL_NoteDriver::RegisterForm(IFWL_Widget* pForm) { | 166 void CFWL_NoteDriver::RegisterForm(IFWL_Widget* pForm) { |
234 if (!pForm) | 167 if (!pForm || m_forms.Find(pForm) >= 0) |
235 return FWL_Error::Indefinite; | 168 return; |
236 if (m_forms.Find(pForm) >= 0) { | 169 |
237 return FWL_Error::Indefinite; | |
238 } | |
239 m_forms.Add(pForm); | 170 m_forms.Add(pForm); |
240 if (m_forms.GetSize() == 1) { | 171 if (m_forms.GetSize() == 1) { |
241 CFWL_NoteLoop* pLoop = | 172 CFWL_NoteLoop* pLoop = |
242 static_cast<CFWL_NoteLoop*>(m_noteLoopQueue.GetAt(0)); | 173 static_cast<CFWL_NoteLoop*>(m_noteLoopQueue.GetAt(0)); |
243 if (!pLoop) | 174 if (!pLoop) |
244 return FWL_Error::Indefinite; | 175 return; |
245 pLoop->SetMainForm(pForm); | 176 pLoop->SetMainForm(pForm); |
246 } | 177 } |
247 return FWL_Error::Succeeded; | |
248 } | 178 } |
249 FWL_Error CFWL_NoteDriver::UnRegisterForm(IFWL_Widget* pForm) { | 179 |
| 180 void CFWL_NoteDriver::UnRegisterForm(IFWL_Widget* pForm) { |
250 if (!pForm) | 181 if (!pForm) |
251 return FWL_Error::Indefinite; | 182 return; |
252 int32_t nIndex = m_forms.Find(pForm); | 183 int32_t nIndex = m_forms.Find(pForm); |
253 if (nIndex < 0) { | 184 if (nIndex < 0) |
254 return FWL_Error::Indefinite; | 185 return; |
255 } | |
256 m_forms.RemoveAt(nIndex); | 186 m_forms.RemoveAt(nIndex); |
257 return FWL_Error::Succeeded; | |
258 } | 187 } |
259 bool CFWL_NoteDriver::QueueMessage(CFWL_Message* pMessage) { | 188 bool CFWL_NoteDriver::QueueMessage(CFWL_Message* pMessage) { |
260 pMessage->Retain(); | 189 pMessage->Retain(); |
261 m_noteQueue.Add(pMessage); | 190 m_noteQueue.Add(pMessage); |
262 return true; | 191 return true; |
263 } | 192 } |
264 bool CFWL_NoteDriver::UnqueueMessage(CFWL_NoteLoop* pNoteLoop) { | 193 bool CFWL_NoteDriver::UnqueueMessage(CFWL_NoteLoop* pNoteLoop) { |
265 if (m_noteQueue.GetSize() < 1) { | 194 if (m_noteQueue.GetSize() < 1) { |
266 return false; | 195 return false; |
267 } | 196 } |
268 CFWL_Message* pMessage = m_noteQueue[0]; | 197 CFWL_Message* pMessage = m_noteQueue[0]; |
269 m_noteQueue.RemoveAt(0); | 198 m_noteQueue.RemoveAt(0); |
270 if (!IsValidMessage(pMessage)) { | 199 if (!IsValidMessage(pMessage)) { |
271 pMessage->Release(); | 200 pMessage->Release(); |
272 return true; | 201 return true; |
273 } | 202 } |
274 ProcessMessage(pMessage); | 203 ProcessMessage(pMessage); |
275 | 204 |
276 pMessage->Release(); | 205 pMessage->Release(); |
277 return true; | 206 return true; |
278 } | 207 } |
279 CFWL_NoteLoop* CFWL_NoteDriver::GetTopLoop() { | 208 CFWL_NoteLoop* CFWL_NoteDriver::GetTopLoop() const { |
280 int32_t size = m_noteLoopQueue.GetSize(); | 209 int32_t size = m_noteLoopQueue.GetSize(); |
281 if (size <= 0) | 210 if (size <= 0) |
282 return nullptr; | 211 return nullptr; |
283 return static_cast<CFWL_NoteLoop*>(m_noteLoopQueue[size - 1]); | 212 return static_cast<CFWL_NoteLoop*>(m_noteLoopQueue[size - 1]); |
284 } | 213 } |
285 int32_t CFWL_NoteDriver::CountLoop() { | |
286 return m_noteLoopQueue.GetSize(); | |
287 } | |
288 | 214 |
289 bool CFWL_NoteDriver::ProcessMessage(CFWL_Message* pMessage) { | 215 bool CFWL_NoteDriver::ProcessMessage(CFWL_Message* pMessage) { |
290 CFWL_WidgetMgr* pWidgetMgr = | 216 CFWL_WidgetMgr* pWidgetMgr = |
291 pMessage->m_pDstTarget->GetOwnerApp()->GetWidgetMgr(); | 217 pMessage->m_pDstTarget->GetOwnerApp()->GetWidgetMgr(); |
292 IFWL_Widget* pMessageForm = pWidgetMgr->IsFormDisabled() | 218 IFWL_Widget* pMessageForm = pWidgetMgr->IsFormDisabled() |
293 ? pMessage->m_pDstTarget | 219 ? pMessage->m_pDstTarget |
294 : GetMessageForm(pMessage->m_pDstTarget); | 220 : GetMessageForm(pMessage->m_pDstTarget); |
295 if (!pMessageForm) | 221 if (!pMessageForm) |
296 return false; | 222 return false; |
297 if (DispatchMessage(pMessage, pMessageForm)) { | 223 if (DispatchMessage(pMessage, pMessageForm)) { |
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
619 } | 545 } |
620 if (!pMessageForm && pDstTarget) { | 546 if (!pMessageForm && pDstTarget) { |
621 CFWL_WidgetMgr* pWidgetMgr = pDstTarget->GetOwnerApp()->GetWidgetMgr(); | 547 CFWL_WidgetMgr* pWidgetMgr = pDstTarget->GetOwnerApp()->GetWidgetMgr(); |
622 if (!pWidgetMgr) | 548 if (!pWidgetMgr) |
623 return nullptr; | 549 return nullptr; |
624 pMessageForm = pWidgetMgr->GetSystemFormWidget(pDstTarget); | 550 pMessageForm = pWidgetMgr->GetSystemFormWidget(pDstTarget); |
625 } | 551 } |
626 return pMessageForm; | 552 return pMessageForm; |
627 } | 553 } |
628 | 554 |
629 void CFWL_NoteDriver::ClearInvalidEventTargets(bool bRemoveAll) { | 555 void CFWL_NoteDriver::ClearEventTargets(bool bRemoveAll) { |
630 auto it = m_eventTargets.begin(); | 556 auto it = m_eventTargets.begin(); |
631 while (it != m_eventTargets.end()) { | 557 while (it != m_eventTargets.end()) { |
632 auto old = it++; | 558 auto old = it++; |
633 if (old->second && (bRemoveAll || old->second->IsInvalid())) { | 559 if (old->second && (bRemoveAll || old->second->IsInvalid())) { |
634 delete old->second; | 560 delete old->second; |
635 m_eventTargets.erase(old); | 561 m_eventTargets.erase(old); |
636 } | 562 } |
637 } | 563 } |
638 } | 564 } |
639 | 565 |
640 CFWL_EventTarget::CFWL_EventTarget(CFWL_NoteDriver* pNoteDriver, | 566 CFWL_EventTarget::CFWL_EventTarget(IFWL_Widget* pListener) |
641 IFWL_Widget* pListener) | 567 : m_pListener(pListener), m_bInvalid(false) {} |
642 : m_pListener(pListener), m_pNoteDriver(pNoteDriver), m_bInvalid(false) {} | |
643 CFWL_EventTarget::~CFWL_EventTarget() { | 568 CFWL_EventTarget::~CFWL_EventTarget() { |
644 m_eventSources.RemoveAll(); | 569 m_eventSources.RemoveAll(); |
645 } | 570 } |
646 | 571 |
647 int32_t CFWL_EventTarget::SetEventSource(IFWL_Widget* pSource, | 572 int32_t CFWL_EventTarget::SetEventSource(IFWL_Widget* pSource, |
648 uint32_t dwFilter) { | 573 uint32_t dwFilter) { |
649 if (pSource) { | 574 if (pSource) { |
650 m_eventSources.SetAt(pSource, dwFilter); | 575 m_eventSources.SetAt(pSource, dwFilter); |
651 return m_eventSources.GetCount(); | 576 return m_eventSources.GetCount(); |
652 } | 577 } |
(...skipping 17 matching lines...) Expand all Loading... |
670 pEvent->GetClassID() == CFWL_EventType::Idle) { | 595 pEvent->GetClassID() == CFWL_EventType::Idle) { |
671 if (IsFilterEvent(pEvent, dwFilter)) { | 596 if (IsFilterEvent(pEvent, dwFilter)) { |
672 pDelegate->OnProcessEvent(pEvent); | 597 pDelegate->OnProcessEvent(pEvent); |
673 return true; | 598 return true; |
674 } | 599 } |
675 } | 600 } |
676 } | 601 } |
677 return false; | 602 return false; |
678 } | 603 } |
679 | 604 |
680 bool CFWL_EventTarget::IsFilterEvent(CFWL_Event* pEvent, uint32_t dwFilter) { | 605 bool CFWL_EventTarget::IsFilterEvent(CFWL_Event* pEvent, |
| 606 uint32_t dwFilter) const { |
681 if (dwFilter == FWL_EVENT_ALL_MASK) | 607 if (dwFilter == FWL_EVENT_ALL_MASK) |
682 return true; | 608 return true; |
683 | 609 |
684 switch (pEvent->GetClassID()) { | 610 switch (pEvent->GetClassID()) { |
685 case CFWL_EventType::Mouse: | 611 case CFWL_EventType::Mouse: |
686 return !!(dwFilter & FWL_EVENT_MOUSE_MASK); | 612 return !!(dwFilter & FWL_EVENT_MOUSE_MASK); |
687 case CFWL_EventType::MouseWheel: | 613 case CFWL_EventType::MouseWheel: |
688 return !!(dwFilter & FWL_EVENT_MOUSEWHEEL_MASK); | 614 return !!(dwFilter & FWL_EVENT_MOUSEWHEEL_MASK); |
689 case CFWL_EventType::Key: | 615 case CFWL_EventType::Key: |
690 return !!(dwFilter & FWL_EVENT_KEY_MASK); | 616 return !!(dwFilter & FWL_EVENT_KEY_MASK); |
691 case CFWL_EventType::SetFocus: | 617 case CFWL_EventType::SetFocus: |
692 case CFWL_EventType::KillFocus: | 618 case CFWL_EventType::KillFocus: |
693 return !!(dwFilter & FWL_EVENT_FOCUSCHANGED_MASK); | 619 return !!(dwFilter & FWL_EVENT_FOCUSCHANGED_MASK); |
694 case CFWL_EventType::Draw: | 620 case CFWL_EventType::Draw: |
695 return !!(dwFilter & FWL_EVENT_DRAW_MASK); | 621 return !!(dwFilter & FWL_EVENT_DRAW_MASK); |
696 case CFWL_EventType::Close: | 622 case CFWL_EventType::Close: |
697 return !!(dwFilter & FWL_EVENT_CLOSE_MASK); | 623 return !!(dwFilter & FWL_EVENT_CLOSE_MASK); |
698 case CFWL_EventType::SizeChanged: | 624 case CFWL_EventType::SizeChanged: |
699 return !!(dwFilter & FWL_EVENT_SIZECHANGED_MASK); | 625 return !!(dwFilter & FWL_EVENT_SIZECHANGED_MASK); |
700 case CFWL_EventType::Idle: | 626 case CFWL_EventType::Idle: |
701 return !!(dwFilter & FWL_EVENT_IDLE_MASK); | 627 return !!(dwFilter & FWL_EVENT_IDLE_MASK); |
702 default: | 628 default: |
703 return !!(dwFilter & FWL_EVENT_CONTROL_MASK); | 629 return !!(dwFilter & FWL_EVENT_CONTROL_MASK); |
704 } | 630 } |
705 } | 631 } |
706 | |
707 CFWL_ToolTipContainer* CFWL_ToolTipContainer::s_pInstance = nullptr; | |
708 | |
709 CFWL_ToolTipContainer::CFWL_ToolTipContainer() | |
710 : m_nInitDelayTime(0), m_nAutoPopDelayTime(2000) { | |
711 m_fAnchor.Set(0.0, 0.0, 0.0, 0.0); | |
712 } | |
713 | |
714 CFWL_ToolTipContainer::~CFWL_ToolTipContainer() {} | |
715 | |
716 void CFWL_ToolTipContainer::GetCaption(IFWL_Widget* pWidget, | |
717 CFX_WideString& wsCaption) { | |
718 wsCaption = m_wsCaption; | |
719 } | |
720 | |
721 int32_t CFWL_ToolTipContainer::GetInitialDelay(IFWL_Widget* pWidget) { | |
722 return m_nInitDelayTime; | |
723 } | |
724 | |
725 int32_t CFWL_ToolTipContainer::GetAutoPopDelay(IFWL_Widget* pWidget) { | |
726 return m_nAutoPopDelayTime; | |
727 } | |
728 | |
729 CFX_DIBitmap* CFWL_ToolTipContainer::GetToolTipIcon(IFWL_Widget* pWidget) { | |
730 return nullptr; | |
731 } | |
732 | |
733 CFX_SizeF CFWL_ToolTipContainer::GetToolTipIconSize(IFWL_Widget* pWidget) { | |
734 return CFX_SizeF(); | |
735 } | |
736 | |
737 CFX_RectF CFWL_ToolTipContainer::GetAnchor() { | |
738 return m_fAnchor; | |
739 } | |
740 | |
741 // static | |
742 CFWL_ToolTipContainer* CFWL_ToolTipContainer::getInstance() { | |
743 if (!s_pInstance) | |
744 s_pInstance = new CFWL_ToolTipContainer; | |
745 return s_pInstance; | |
746 } | |
747 | |
748 // static | |
749 void CFWL_ToolTipContainer::DeleteInstance() { | |
750 delete s_pInstance; | |
751 s_pInstance = nullptr; | |
752 } | |
OLD | NEW |