summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2001-04-24 18:19:13 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2001-04-24 18:19:13 (GMT)
commitb5746484e4c396489b707e0f8b4d1f539e62a965 (patch)
treef61bc5000e702fa75ecdd7a77e3490ba946f0264
parent37468fad3aed3eb5116e42362d1b6f37adde595f (diff)
downloadCMake-b5746484e4c396489b707e0f8b4d1f539e62a965.zip
CMake-b5746484e4c396489b707e0f8b4d1f539e62a965.tar.gz
CMake-b5746484e4c396489b707e0f8b4d1f539e62a965.tar.bz2
BUG: fix duplicate property items
-rw-r--r--Source/MFCDialog/CMakeSetupDialog.cpp4
-rw-r--r--Source/MFCDialog/PropertyList.cpp23
-rw-r--r--Source/MFCDialog/PropertyList.h6
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;
};
/////////////////////////////////////////////////////////////////////////////