[commit] r2674 - in trunk: Paradigms/MetaGME/MetaDecorator SDK/DecoratorLib

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Thu May 11 16:35:08 CDT 2017


Author: ksmyth
Date: Thu May 11 16:35:08 2017
New Revision: 2674

Log:
MetaDecorator: dont crash when trying to edit an attribute in a library

Modified:
   trunk/Paradigms/MetaGME/MetaDecorator/MetaAttributePart.cpp
   trunk/SDK/DecoratorLib/InPlaceEditDialog.cpp

Modified: trunk/Paradigms/MetaGME/MetaDecorator/MetaAttributePart.cpp
==============================================================================
--- trunk/Paradigms/MetaGME/MetaDecorator/MetaAttributePart.cpp	Tue May  9 13:49:17 2017	(r2673)
+++ trunk/Paradigms/MetaGME/MetaDecorator/MetaAttributePart.cpp	Thu May 11 16:35:08 2017	(r2674)
@@ -37,12 +37,12 @@
 void MetaAttributePart::ExecuteOperation(const CString& newString)
 {
 	// transaction operation begin
-	m_strText = newString;
 	CComBSTR bstr;
 	CopyTo(newString, bstr);
 	HRESULT hr = m_spActualFCO->put_Name(bstr);
 	if (hr != E_MGA_NAME_DUPLICATE)
 		COMTHROW(hr);
+	m_strText = newString;
 	// transaction operation end
 }
 
@@ -57,8 +57,10 @@
 {
 	__super::InitializeEx(pProject, pPart, pFCO, parentWnd, preferences);
 	VARIANT_BOOL isLibObject = VARIANT_TRUE;
-	pFCO->get_IsLibObject(&isLibObject);
-	m_bTextEditable = isLibObject == VARIANT_FALSE;
+	m_spActualFCO->get_IsLibObject(&isLibObject);
+	VARIANT_BOOL isReadOnly = VARIANT_TRUE;
+	m_spActualFCO->HasReadOnlyAccess(&isReadOnly);
+	m_bTextEditable = isLibObject == VARIANT_FALSE && isReadOnly == VARIANT_FALSE;
 }
 
 }; // namespace MetaDecor

Modified: trunk/SDK/DecoratorLib/InPlaceEditDialog.cpp
==============================================================================
--- trunk/SDK/DecoratorLib/InPlaceEditDialog.cpp	Tue May  9 13:49:17 2017	(r2673)
+++ trunk/SDK/DecoratorLib/InPlaceEditDialog.cpp	Thu May 11 16:35:08 2017	(r2674)
@@ -102,7 +102,12 @@
 				m_Text = textToValidate;
 				m_parentPart->LabelChanged(m_Text);
 				// transaction operation begin
-				m_parentPart->ExecuteOperation(m_Text);
+				try {
+					m_parentPart->ExecuteOperation(m_Text);
+				}
+				catch (const hresult_exception&) {
+					// FIXME send crashrpt
+				}
 				// transaction operation end
 			} else {
 				m_intendedParentCWnd->MessageBox(_T("Invalid (non ASCII) string data: ") + textToValidate, _T("In-place Editor"), MB_ICONERROR);


More information about the gme-commit mailing list