From 20bff1d6feea3476891565ade1903eb0aee54fcf Mon Sep 17 00:00:00 2001 From: Dmitry Okunev Date: Wed, 29 Jan 2025 14:02:14 +0300 Subject: [PATCH] for bug #72794 --- .../Converter/StarMath2OOXML/cooxml2odf.cpp | 47 ++++++++++--------- X2tConverter/test/TestOOOXml2Odf/test.cpp | 4 +- 2 files changed, 28 insertions(+), 23 deletions(-) diff --git a/OdfFile/Reader/Converter/StarMath2OOXML/cooxml2odf.cpp b/OdfFile/Reader/Converter/StarMath2OOXML/cooxml2odf.cpp index 184c457ae2..db5806bbcc 100644 --- a/OdfFile/Reader/Converter/StarMath2OOXML/cooxml2odf.cpp +++ b/OdfFile/Reader/Converter/StarMath2OOXML/cooxml2odf.cpp @@ -1286,7 +1286,7 @@ namespace StarMath StValuePr stBarPr; if(pBarPr == nullptr) return stBarPr; - if(pBarPr->m_oPos.IsInit() && pBarPr->m_oPos->m_val.IsInit()) + if(pBarPr->m_oPos.GetPointer() != nullptr && pBarPr->m_oPos->m_val.GetPointer() != nullptr) stBarPr.m_enPos = pBarPr->m_oPos->m_val->GetValue(); stStyle = ConversionCtrlPr(pBarPr->m_oCtrlPr.GetPointer()); return stBarPr; @@ -2042,31 +2042,36 @@ namespace StarMath } void CRelationsAndOperationsOnSets::Conversion(XmlUtils::CXmlWriter *pXmlWrite, std::wstring &wsAnnotation) { - pXmlWrite->WriteNodeBegin(L"mrow",false); - if(m_pLeftArg!= nullptr) - { - if(GetAttribute() != nullptr) - { - GetAttribute()->AddRef(); - m_pLeftArg->SetAttribute(GetAttribute()); - } - m_pLeftArg->Conversion(pXmlWrite,wsAnnotation); - } - if(m_wsAnnotationSymbol == L"\u0026lt;" || m_wsAnnotationSymbol == L"\u0026gt;") - COOXml2Odf::RecordingMoNode(m_wsAnnotationSymbol,pXmlWrite); + if(m_pLeftArg == nullptr && m_pRightArg == nullptr) + COOXml2Odf::MTextRecording(pXmlWrite,wsAnnotation,m_wsSymbol); else - COOXml2Odf::RecordingMoNode(m_wsSymbol,pXmlWrite); - wsAnnotation += m_wsAnnotationSymbol + L" "; - if(m_pRightArg != nullptr) { - if(GetAttribute() != nullptr) + pXmlWrite->WriteNodeBegin(L"mrow",false); + if(m_pLeftArg!= nullptr) { - GetAttribute()->AddRef(); - m_pRightArg->SetAttribute(GetAttribute()); + if(GetAttribute() != nullptr) + { + GetAttribute()->AddRef(); + m_pLeftArg->SetAttribute(GetAttribute()); + } + m_pLeftArg->Conversion(pXmlWrite,wsAnnotation); } - m_pRightArg->Conversion(pXmlWrite,wsAnnotation); + if(m_wsAnnotationSymbol == L"\u0026lt;" || m_wsAnnotationSymbol == L"\u0026gt;") + COOXml2Odf::RecordingMoNode(m_wsAnnotationSymbol,pXmlWrite); + else + COOXml2Odf::RecordingMoNode(m_wsSymbol,pXmlWrite); + wsAnnotation += m_wsAnnotationSymbol + L" "; + if(m_pRightArg != nullptr) + { + if(GetAttribute() != nullptr) + { + GetAttribute()->AddRef(); + m_pRightArg->SetAttribute(GetAttribute()); + } + m_pRightArg->Conversion(pXmlWrite,wsAnnotation); + } + pXmlWrite->WriteNodeEnd(L"mrow",false,false); } - pXmlWrite->WriteNodeEnd(L"mrow",false,false); } void CRelationsAndOperationsOnSets::SetLeftArg(COneElement *pElement) { diff --git a/X2tConverter/test/TestOOOXml2Odf/test.cpp b/X2tConverter/test/TestOOOXml2Odf/test.cpp index 310b0c6c68..7227ec5a8d 100644 --- a/X2tConverter/test/TestOOOXml2Odf/test.cpp +++ b/X2tConverter/test/TestOOOXml2Odf/test.cpp @@ -450,7 +450,7 @@ TEST(OOXml2OdfTest,Example1) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.StartConversion(pElement); - std::wstring wsOdf = L"(x+a)n=\u2211k=0n(nk)xkan-kleft ( x + a right ) ^ {n } = sum from {k = 0 } to {n } left ( binom { n } { k } right ) x ^ {k } a ^ {n - k } "; + std::wstring wsOdf = L"(x+a)n=\x2211k=0n(nk)xkan-kleft ( x + a right ) ^ {n } "=" sum from {k = 0 } to {n } left ( binom { n } { k } right ) x ^ {k } a ^ {n - k } "; EXPECT_EQ(oTest.GetOdf(),wsOdf); } TEST(OOXml2OdfTest,Example3) @@ -505,7 +505,7 @@ TEST(OOXml2OdfTest,Example7) pElement->fromXML(oReader); StarMath::COOXml2Odf oTest; oTest.StartConversion(pElement); - std::wstring wsOdf = L"a2+b2=c2a ^ {2 } + b ^ {2 } = c ^ {2 } "; + std::wstring wsOdf = L"a2+b2=c2a ^ {2 } + b ^ {2 } "=" c ^ {2 } "; EXPECT_EQ(oTest.GetOdf(),wsOdf); } TEST(OOXml2OdfTest,Example9)