BUG: fix cache updates
This commit is contained in:
parent
818b0e5bc1
commit
37468fad3a
|
@ -96,6 +96,7 @@ CMakeSetupDialog::CMakeSetupDialog(CWnd* pParent /*=NULL*/)
|
|||
m_WhereSource = startPath;
|
||||
this->LoadFromRegistry();
|
||||
m_InitMakefile = false;
|
||||
m_GUIInitialized = false;
|
||||
this->InitMakefile();
|
||||
|
||||
}
|
||||
|
@ -104,7 +105,13 @@ void CMakeSetupDialog::InitMakefile()
|
|||
{
|
||||
if(m_InitMakefile)
|
||||
{
|
||||
return;
|
||||
// if no change in source or build then
|
||||
// do not re-init the m_Makefile
|
||||
if(m_WhereSource == m_WhereSourceLast
|
||||
&& m_WhereBuild == m_WhereBuildLast)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(m_WhereBuild == "")
|
||||
{
|
||||
|
@ -114,6 +121,10 @@ void CMakeSetupDialog::InitMakefile()
|
|||
{
|
||||
return;
|
||||
}
|
||||
// save the values for these so we can detect
|
||||
// when the GUI has changed them
|
||||
m_WhereBuildLast = m_WhereBuild;
|
||||
m_WhereSourceLast = m_WhereSource;
|
||||
m_InitMakefile = true;
|
||||
// set up the cmMakefile member
|
||||
m_Makefile.SetMakefileGenerator(new cmMSProjectGenerator);
|
||||
|
@ -128,6 +139,11 @@ void CMakeSetupDialog::InitMakefile()
|
|||
m_Makefile.MakeStartDirectoriesCurrent();
|
||||
// Create a string for the cache file
|
||||
cmCacheManager::GetInstance()->LoadCache(&m_Makefile);
|
||||
// if the GUI is already up, then reset it to the loaded cache
|
||||
if(m_GUIInitialized)
|
||||
{
|
||||
this->FillCacheEditorFromCacheManager();
|
||||
}
|
||||
}
|
||||
|
||||
void CMakeSetupDialog::DoDataExchange(CDataExchange* pDX)
|
||||
|
@ -187,6 +203,7 @@ BEGIN_MESSAGE_MAP(CMakeSetupDialog, CDialog)
|
|||
{
|
||||
this->FillCacheEditorFromCacheManager();
|
||||
}
|
||||
m_GUIInitialized = true;
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
}
|
||||
|
||||
|
@ -365,9 +382,11 @@ void CMakeSetupDialog::LoadFromRegistry()
|
|||
|
||||
void CMakeSetupDialog::OnBuildProjects()
|
||||
{
|
||||
::SetCursor(LoadCursor(NULL, IDC_WAIT));
|
||||
// get all the info from the screen
|
||||
this->UpdateData();
|
||||
::SetCursor(LoadCursor(NULL, IDC_WAIT));
|
||||
// re-init the m_Makefile
|
||||
this->InitMakefile();
|
||||
// copy the GUI cache values into the cache manager
|
||||
this->FillCacheManagerFromCacheEditor();
|
||||
CString makefileIn = m_WhereSource;
|
||||
|
@ -438,16 +457,17 @@ void CMakeSetupDialog::FillCacheManagerFromCacheEditor()
|
|||
for(std::list<CPropertyItem*>::iterator i = items.begin();
|
||||
i != items.end(); ++i)
|
||||
{
|
||||
CPropertyItem* item = *i;
|
||||
// check to see if the editor has removed the cache entry
|
||||
if((*i)->m_Removed)
|
||||
if(item->m_Removed)
|
||||
{
|
||||
cmCacheManager::GetInstance()->RemoveCacheEntry((*i)->m_propName);
|
||||
}
|
||||
else
|
||||
{
|
||||
cmCacheManager::CacheEntryMap::iterator p =
|
||||
cache.find((const char*)(*i)->m_propName);
|
||||
(*p).second.m_Value = (*i)->m_curValue;
|
||||
cache.find((const char*)item->m_propName);
|
||||
(*p).second.m_Value = item->m_curValue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,8 +31,11 @@ protected:
|
|||
enum { IDD = IDD_CMakeSetupDialog_DIALOG };
|
||||
cmMakefile m_Makefile;
|
||||
bool m_InitMakefile;
|
||||
bool m_GUIInitialized;
|
||||
CString m_WhereSource;
|
||||
CString m_WhereBuild;
|
||||
CString m_WhereSourceLast;
|
||||
CString m_WhereBuildLast;
|
||||
CPropertyList m_CacheEntriesList;
|
||||
//}}AFX_DATA
|
||||
|
||||
|
|
|
@ -144,10 +144,8 @@ int CPropertyList::AddProperty(const char* name,
|
|||
}
|
||||
}
|
||||
// if it is not found, then create a new one
|
||||
int nIndex = AddString(_T(""));
|
||||
pItem = new CPropertyItem(name, value, type, comboItems);
|
||||
SetItemDataPtr(nIndex,pItem);
|
||||
return nIndex;
|
||||
return this->AddPropItem(pItem);
|
||||
}
|
||||
|
||||
int CPropertyList::OnCreate(LPCREATESTRUCT lpCreateStruct)
|
||||
|
|
Loading…
Reference in New Issue