From bda367eb59f278f82a5fbeb364e62b42de5efabe Mon Sep 17 00:00:00 2001 From: John Maxwell Date: Wed, 27 Aug 2025 11:49:48 -0700 Subject: [PATCH] Fix LT-22155: Merge entry/sense losing some custom fields --- src/SIL.LCModel/DomainImpl/CmObject.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/SIL.LCModel/DomainImpl/CmObject.cs b/src/SIL.LCModel/DomainImpl/CmObject.cs index 9a6e5b3d..72a115ac 100644 --- a/src/SIL.LCModel/DomainImpl/CmObject.cs +++ b/src/SIL.LCModel/DomainImpl/CmObject.cs @@ -833,9 +833,16 @@ public void MergeSelectedPropertiesOfObject(ICmObject objSrc, bool fLoseNoString myCurrentValue = new MultiStringAccessor(this, flid); srcCurrentValue = new MultiStringAccessor(objSrc, flid); break; - case (int)CellarPropertyType.MultiUnicode: - myCurrentValue = new MultiUnicodeAccessor(this, flid); - srcCurrentValue = new MultiUnicodeAccessor(objSrc, flid); + case (int)CellarPropertyType.OwningAtomic: + case (int)CellarPropertyType.ReferenceAtomic: + int myHvo = m_cache.DomainDataByFlid.get_ObjectProp(Hvo, flid); + int srcHvo = m_cache.DomainDataByFlid.get_ObjectProp(objSrc.Hvo, flid); + myCurrentValue = m_cache.GetAtomicPropObject(myHvo); + srcCurrentValue = m_cache.GetAtomicPropObject(srcHvo); + break; + default: + myCurrentValue = this.GetCustomPropertyForSDA(flid); + srcCurrentValue = ((CmObject)objSrc).GetCustomPropertyForSDA(flid); break; } }