diff options
Diffstat (limited to 'Source/MFCDialog/PropertyList.cpp')
-rw-r--r-- | Source/MFCDialog/PropertyList.cpp | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/Source/MFCDialog/PropertyList.cpp b/Source/MFCDialog/PropertyList.cpp index a4b2aea..b798e10 100644 --- a/Source/MFCDialog/PropertyList.cpp +++ b/Source/MFCDialog/PropertyList.cpp @@ -20,7 +20,7 @@ CPropertyList::CPropertyList() CPropertyList::~CPropertyList() { - for(std::list<CPropertyItem*>::iterator i = m_PropertyItems.begin(); + for(std::set<CPropertyItem*>::iterator i = m_PropertyItems.begin(); i != m_PropertyItems.end(); ++i) { delete *i; @@ -118,7 +118,7 @@ int CPropertyList::AddPropItem(CPropertyItem* pItem) { int nIndex = AddString(_T("")); SetItemDataPtr(nIndex,pItem); - m_PropertyItems.push_back(pItem); + m_PropertyItems.insert(pItem); return nIndex; } @@ -143,8 +143,25 @@ int CPropertyList::AddProperty(const char* name, return i; } } + // if it is not in the displayed list, then + // check for it in the m_PropertyItems list as + // a removed item + for(std::set<CPropertyItem*>::iterator + p = m_PropertyItems.begin(); + p != m_PropertyItems.end(); ++p) + { + if((*p)->m_propName == name) + { + pItem = *p; + pItem->m_Removed = false; + } + } // if it is not found, then create a new one - pItem = new CPropertyItem(name, value, type, comboItems); + if(!pItem) + { + pItem = new CPropertyItem(name, value, type, comboItems); + } + return this->AddPropItem(pItem); } |