Index: fpdfsdk/pdfwindow/PWL_Wnd.cpp |
diff --git a/fpdfsdk/pdfwindow/PWL_Wnd.cpp b/fpdfsdk/pdfwindow/PWL_Wnd.cpp |
index c9dc89c07e03c7c00176b13ebfbad2fd7260f1de..d3b3b9b75488c3178c7a01cc60b65a1bba653047 100644 |
--- a/fpdfsdk/pdfwindow/PWL_Wnd.cpp |
+++ b/fpdfsdk/pdfwindow/PWL_Wnd.cpp |
@@ -5,11 +5,13 @@ |
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
#include <map> |
+#include <vector> |
#include "fpdfsdk/pdfwindow/PWL_ScrollBar.h" |
#include "fpdfsdk/pdfwindow/PWL_Utils.h" |
#include "fpdfsdk/pdfwindow/PWL_Wnd.h" |
#include "third_party/base/ptr_util.h" |
+#include "third_party/base/stl_util.h" |
static std::map<int32_t, CPWL_Timer*>& GetPWLTimeMap() { |
// Leak the object at shutdown. |
@@ -111,8 +113,8 @@ class CPWL_MsgControl { |
~CPWL_MsgControl() { Default(); } |
void Default() { |
- m_aMousePath.RemoveAll(); |
- m_aKeyboardPath.RemoveAll(); |
+ m_aMousePath.clear(); |
+ m_aKeyboardPath.clear(); |
m_pMainMouseWnd = nullptr; |
m_pMainKeyboardWnd = nullptr; |
} |
@@ -126,14 +128,7 @@ class CPWL_MsgControl { |
} |
bool IsWndCaptureMouse(const CPWL_Wnd* pWnd) const { |
- if (pWnd) { |
- for (int32_t i = 0, sz = m_aMousePath.GetSize(); i < sz; i++) { |
- if (m_aMousePath.GetAt(i) == pWnd) |
- return true; |
- } |
- } |
- |
- return false; |
+ return pWnd && pdfium::ContainsValue(m_aMousePath, pWnd); |
} |
bool IsMainCaptureKeyboard(const CPWL_Wnd* pWnd) const { |
@@ -141,50 +136,38 @@ class CPWL_MsgControl { |
} |
bool IsWndCaptureKeyboard(const CPWL_Wnd* pWnd) const { |
- if (pWnd) { |
- for (int32_t i = 0, sz = m_aKeyboardPath.GetSize(); i < sz; i++) { |
- if (m_aKeyboardPath.GetAt(i) == pWnd) |
- return true; |
- } |
- } |
- |
- return false; |
+ return pWnd && pdfium::ContainsValue(m_aKeyboardPath, pWnd); |
} |
void SetFocus(CPWL_Wnd* pWnd) { |
- m_aKeyboardPath.RemoveAll(); |
- |
+ m_aKeyboardPath.clear(); |
if (pWnd) { |
m_pMainKeyboardWnd = pWnd; |
- |
CPWL_Wnd* pParent = pWnd; |
while (pParent) { |
- m_aKeyboardPath.Add(pParent); |
+ m_aKeyboardPath.push_back(pParent); |
pParent = pParent->GetParentWindow(); |
} |
- |
pWnd->OnSetFocus(); |
} |
} |
void KillFocus() { |
- if (m_aKeyboardPath.GetSize() > 0) |
- if (CPWL_Wnd* pWnd = m_aKeyboardPath.GetAt(0)) |
+ if (!m_aKeyboardPath.empty()) |
+ if (CPWL_Wnd* pWnd = m_aKeyboardPath[0]) |
pWnd->OnKillFocus(); |
m_pMainKeyboardWnd = nullptr; |
- m_aKeyboardPath.RemoveAll(); |
+ m_aKeyboardPath.clear(); |
} |
void SetCapture(CPWL_Wnd* pWnd) { |
- m_aMousePath.RemoveAll(); |
- |
+ m_aMousePath.clear(); |
if (pWnd) { |
m_pMainMouseWnd = pWnd; |
- |
CPWL_Wnd* pParent = pWnd; |
while (pParent) { |
- m_aMousePath.Add(pParent); |
+ m_aMousePath.push_back(pParent); |
pParent = pParent->GetParentWindow(); |
} |
} |
@@ -192,12 +175,12 @@ class CPWL_MsgControl { |
void ReleaseCapture() { |
m_pMainMouseWnd = nullptr; |
- m_aMousePath.RemoveAll(); |
+ m_aMousePath.clear(); |
} |
private: |
- CFX_ArrayTemplate<CPWL_Wnd*> m_aMousePath; |
- CFX_ArrayTemplate<CPWL_Wnd*> m_aKeyboardPath; |
+ std::vector<CPWL_Wnd*> m_aMousePath; |
+ std::vector<CPWL_Wnd*> m_aKeyboardPath; |
CPWL_Wnd* m_pCreatedWnd; |
CPWL_Wnd* m_pMainMouseWnd; |
CPWL_Wnd* m_pMainKeyboardWnd; |