diff options
author | Bill Hoffman <bill.hoffman@kitware.com> | 2001-04-24 18:19:13 (GMT) |
---|---|---|
committer | Bill Hoffman <bill.hoffman@kitware.com> | 2001-04-24 18:19:13 (GMT) |
commit | b5746484e4c396489b707e0f8b4d1f539e62a965 (patch) | |
tree | f61bc5000e702fa75ecdd7a77e3490ba946f0264 | |
parent | 37468fad3aed3eb5116e42362d1b6f37adde595f (diff) | |
download | CMake-b5746484e4c396489b707e0f8b4d1f539e62a965.zip CMake-b5746484e4c396489b707e0f8b4d1f539e62a965.tar.gz CMake-b5746484e4c396489b707e0f8b4d1f539e62a965.tar.bz2 |
BUG: fix duplicate property items
-rw-r--r-- | Source/MFCDialog/CMakeSetupDialog.cpp | 4 | ||||
-rw-r--r-- | Source/MFCDialog/PropertyList.cpp | 23 | ||||
-rw-r--r-- | Source/MFCDialog/PropertyList.h | 6 |
3 files changed, 25 insertions, 8 deletions
diff --git a/Source/MFCDialog/CMakeSetupDialog.cpp b/Source/MFCDialog/CMakeSetupDialog.cpp index add242b..e06aaa3 100644 --- a/Source/MFCDialog/CMakeSetupDialog.cpp +++ b/Source/MFCDialog/CMakeSetupDialog.cpp @@ -453,8 +453,8 @@ void CMakeSetupDialog::FillCacheManagerFromCacheEditor() { cmCacheManager::CacheEntryMap cache = cmCacheManager::GetInstance()->GetCacheMap(); - std::list<CPropertyItem*> items = m_CacheEntriesList.GetItems(); - for(std::list<CPropertyItem*>::iterator i = items.begin(); + std::set<CPropertyItem*> items = m_CacheEntriesList.GetItems(); + for(std::set<CPropertyItem*>::iterator i = items.begin(); i != items.end(); ++i) { CPropertyItem* item = *i; 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); } diff --git a/Source/MFCDialog/PropertyList.h b/Source/MFCDialog/PropertyList.h index c6d65ed..a5a8f21 100644 --- a/Source/MFCDialog/PropertyList.h +++ b/Source/MFCDialog/PropertyList.h @@ -19,7 +19,7 @@ #define IDC_PROPBTNCTRL 714 #define IDC_PROPCHECKBOXCTRL 715 -#include <list> +#include "../cmStandardIncludes.h" ///////////////////////////////////////////////////////////////////////////// //CPropertyList Items @@ -63,7 +63,7 @@ public: const char* value, int type, const char* comboItems); - std::list<CPropertyItem*> GetItems() + std::set<CPropertyItem*> GetItems() { return m_PropertyItems; } @@ -130,7 +130,7 @@ protected: BOOL m_bDivIsSet; HCURSOR m_hCursorArrow; HCURSOR m_hCursorSize; - std::list<CPropertyItem*> m_PropertyItems; + std::set<CPropertyItem*> m_PropertyItems; }; ///////////////////////////////////////////////////////////////////////////// |