Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1068)

Unified Diff: xfa/src/fwl/src/lightwidget/combobox.cpp

Issue 1669313002: Remove CFX_PtrArray from xfa's combobox.h. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Meh, map and memory are both m-words. Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « xfa/include/fwl/lightwidget/combobox.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: xfa/src/fwl/src/lightwidget/combobox.cpp
diff --git a/xfa/src/fwl/src/lightwidget/combobox.cpp b/xfa/src/fwl/src/lightwidget/combobox.cpp
index eb5e12a08cef04b65fb97d9552bbd9199cfc8265..07556b7797f486a7a479ec21b04ad3d8af27e30b 100644
--- a/xfa/src/fwl/src/lightwidget/combobox.cpp
+++ b/xfa/src/fwl/src/lightwidget/combobox.cpp
@@ -4,7 +4,7 @@
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-#include <memory>
+#include <utility>
#include "xfa/src/foxitlib.h"
@@ -28,25 +28,30 @@ FWL_ERR CFWL_ComboBox::Initialize(const CFWL_WidgetProperties* pProperties) {
return FWL_ERR_Succeeded;
}
int32_t CFWL_ComboBox::AddString(const CFX_WideStringC& wsText) {
- CFWL_ComboBoxItem* pItem = new CFWL_ComboBoxItem;
+ std::unique_ptr<CFWL_ComboBoxItem> pItem(new CFWL_ComboBoxItem);
pItem->m_wsText = wsText;
pItem->m_dwStyles = 0;
- return m_comboBoxData.m_arrItem.Add(pItem);
+ m_comboBoxData.m_ItemArray.push_back(std::move(pItem));
+ return m_comboBoxData.m_ItemArray.size() - 1;
}
int32_t CFWL_ComboBox::AddString(const CFX_WideStringC& wsText,
CFX_DIBitmap* pIcon) {
- CFWL_ComboBoxItem* pItem = new CFWL_ComboBoxItem;
+ std::unique_ptr<CFWL_ComboBoxItem> pItem(new CFWL_ComboBoxItem);
pItem->m_wsText = wsText;
pItem->m_dwStyles = 0;
pItem->m_pDIB = pIcon;
- return m_comboBoxData.m_arrItem.Add(pItem);
+ m_comboBoxData.m_ItemArray.push_back(std::move(pItem));
+ return m_comboBoxData.m_ItemArray.size() - 1;
}
-int32_t CFWL_ComboBox::RemoveAt(int32_t iIndex) {
- return m_comboBoxData.m_arrItem.RemoveAt(iIndex);
+bool CFWL_ComboBox::RemoveAt(int32_t iIndex) {
+ if (iIndex < 0 || iIndex >= m_comboBoxData.m_ItemArray.size())
+ return false;
+
+ m_comboBoxData.m_ItemArray.erase(m_comboBoxData.m_ItemArray.begin() + iIndex);
+ return true;
}
-int32_t CFWL_ComboBox::RemoveAll() {
- m_comboBoxData.m_arrItem.RemoveAll();
- return 0;
+void CFWL_ComboBox::RemoveAll() {
+ m_comboBoxData.m_ItemArray.clear();
}
int32_t CFWL_ComboBox::CountItems() {
return m_comboBoxData.CountItems(GetWidget());
@@ -234,32 +239,33 @@ CFWL_ComboBox::CFWL_ComboBoxDP::CFWL_ComboBoxDP() {
m_fItemHeight = 0;
m_fMaxListHeight = 0;
}
-CFWL_ComboBox::CFWL_ComboBoxDP::~CFWL_ComboBoxDP() {
- int32_t nCount = m_arrItem.GetSize();
- for (int32_t i = 0; i < nCount; i++) {
- delete static_cast<CFWL_ComboBoxItem*>(m_arrItem[i]);
- }
- m_arrItem.RemoveAll();
-}
+CFWL_ComboBox::CFWL_ComboBoxDP::~CFWL_ComboBoxDP() {}
int32_t CFWL_ComboBox::CFWL_ComboBoxDP::CountItems(IFWL_Widget* pWidget) {
- return m_arrItem.GetSize();
+ return m_ItemArray.size();
}
FWL_HLISTITEM CFWL_ComboBox::CFWL_ComboBoxDP::GetItem(IFWL_Widget* pWidget,
int32_t nIndex) {
- int32_t iCount = m_arrItem.GetSize();
- if (nIndex >= iCount || nIndex < 0) {
- return NULL;
- }
- return (FWL_HLISTITEM)m_arrItem[nIndex];
+ return nIndex >= 0 && nIndex < m_ItemArray.size()
+ ? reinterpret_cast<FWL_HLISTITEM>(m_ItemArray[nIndex].get())
+ : nullptr;
}
int32_t CFWL_ComboBox::CFWL_ComboBoxDP::GetItemIndex(IFWL_Widget* pWidget,
FWL_HLISTITEM hItem) {
- return m_arrItem.Find(hItem);
+ auto it = std::find_if(
+ m_ItemArray.begin(), m_ItemArray.end(),
+ [hItem](const std::unique_ptr<CFWL_ComboBoxItem>& candidate) {
+ return candidate.get() == reinterpret_cast<CFWL_ComboBoxItem*>(hItem);
+ });
+ return it != m_ItemArray.end() ? it - m_ItemArray.begin() : -1;
}
FX_BOOL CFWL_ComboBox::CFWL_ComboBoxDP::SetItemIndex(IFWL_Widget* pWidget,
FWL_HLISTITEM hItem,
int32_t nIndex) {
- return m_arrItem.SetAt(nIndex, hItem);
+ if (nIndex < 0 || nIndex >= m_ItemArray.size())
+ return FALSE;
+
+ m_ItemArray[nIndex].reset(reinterpret_cast<CFWL_ComboBoxItem*>(hItem));
+ return TRUE;
}
FX_DWORD CFWL_ComboBox::CFWL_ComboBoxDP::GetItemStyles(IFWL_Widget* pWidget,
FWL_HLISTITEM hItem) {
« no previous file with comments | « xfa/include/fwl/lightwidget/combobox.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698