diff options
Diffstat (limited to 'starmath/source')
-rw-r--r-- | starmath/source/dialog.cxx | 8 | ||||
-rw-r--r-- | starmath/source/node.cxx | 6 | ||||
-rw-r--r-- | starmath/source/parse5.cxx | 18 | ||||
-rw-r--r-- | starmath/source/symbol.cxx | 35 |
4 files changed, 44 insertions, 23 deletions
diff --git a/starmath/source/dialog.cxx b/starmath/source/dialog.cxx index 8625072c90e8..c5e38f6cb684 100644 --- a/starmath/source/dialog.cxx +++ b/starmath/source/dialog.cxx @@ -1544,7 +1544,7 @@ void SmSymDefineDialog::FillStyles() SmSym* SmSymDefineDialog::GetSymbol(const weld::ComboBox& rComboBox) { assert((&rComboBox == m_xOldSymbols.get() || &rComboBox == m_xSymbols.get()) && "Sm : wrong combobox"); - return m_aSymbolMgrCopy.GetSymbolByName(rComboBox.get_active_text()); + return m_aSymbolMgrCopy.GetSymbolByUiName(rComboBox.get_active_text()); } IMPL_LINK(SmSymDefineDialog, OldSymbolChangeHdl, weld::ComboBox&, rComboBox, void) @@ -1652,7 +1652,7 @@ IMPL_LINK( SmSymDefineDialog, AddClickHdl, weld::Button&, rButton, void ) // add symbol const SmSym aNewSymbol(m_xSymbols->get_active_text(), m_xCharsetDisplay->GetFont(), m_xCharsetDisplay->GetSelectCharacter(), m_xSymbolSets->get_active_text()); - //OSL_ENSURE( m_aSymbolMgrCopy.GetSymbolByName(aTmpSymbolName) == NULL, "symbol already exists" ); + //OSL_ENSURE( m_aSymbolMgrCopy.GetSymbolByUiName(aTmpSymbolName) == NULL, "symbol already exists" ); m_aSymbolMgrCopy.AddOrReplaceSymbol( aNewSymbol ); // update display of new symbol @@ -1750,7 +1750,7 @@ void SmSymDefineDialog::UpdateButtons() && m_xCharsetDisplay->GetSelectCharacter() == m_xOrigSymbol->GetCharacter(); // only add it if there isn't already a symbol with the same name - bAdd = m_aSymbolMgrCopy.GetSymbolByName(aTmpSymbolName) == nullptr; + bAdd = m_aSymbolMgrCopy.GetSymbolByUiName(aTmpSymbolName) == nullptr; // only delete it if all settings are equal bDelete = bool(m_xOrigSymbol); @@ -1982,7 +1982,7 @@ bool SmSymDefineDialog::SelectSymbol(weld::ComboBox& rComboBox, OUString aTmpOldSymbolSetName; if (nPos != -1) { - pOldSymbol = m_aSymbolMgrCopy.GetSymbolByName(aNormName); + pOldSymbol = m_aSymbolMgrCopy.GetSymbolByUiName(aNormName); aTmpOldSymbolSetName = m_xOldSymbolSets->get_active_text(); } SetOrigSymbol(pOldSymbol, aTmpOldSymbolSetName); diff --git a/starmath/source/node.cxx b/starmath/source/node.cxx index 01b14c177e43..b0b91dabe99e 100644 --- a/starmath/source/node.cxx +++ b/starmath/source/node.cxx @@ -2155,8 +2155,7 @@ static bool lcl_IsFromGreekSymbolSet( std::u16string_view aTokenText ) // valid symbol name needs to have a '%' at pos 0 and at least an additional char if (aTokenText.size() > 2 && aTokenText[0] == u'%') { - OUString aName( aTokenText.substr(1) ); - SmSym *pSymbol = SM_MOD()->GetSymbolManager().GetSymbolByName( aName ); + SmSym *pSymbol = SM_MOD()->GetSymbolManager().GetSymbolByName(aTokenText.substr(1)); if (pSymbol && SmLocalizedSymbolData::GetExportSymbolSetName(pSymbol->GetSymbolSetName()) == "Greek") bRes = true; } @@ -2186,8 +2185,7 @@ void SmSpecialNode::Prepare(const SmFormat &rFormat, const SmDocShell &rDocShell const SmSym *pSym; SmModule *pp = SM_MOD(); - OUString aName(GetToken().aText.copy(1)); - if (nullptr != (pSym = pp->GetSymbolManager().GetSymbolByName( aName ))) + if (nullptr != (pSym = pp->GetSymbolManager().GetSymbolByName(GetToken().aText.subView(1)))) { sal_UCS4 cChar = pSym->GetCharacter(); OUString aTmp( &cChar, 1 ); diff --git a/starmath/source/parse5.cxx b/starmath/source/parse5.cxx index 04c4702683b1..27c2471e7418 100644 --- a/starmath/source/parse5.cxx +++ b/starmath/source/parse5.cxx @@ -29,6 +29,7 @@ #include <parse5.hxx> #include <strings.hrc> #include <smmod.hxx> +#include <symbol.hxx> #include <cfgitem.hxx> #include <starmathdatabase.hxx> @@ -2632,13 +2633,22 @@ std::unique_ptr<SmSpecialNode> SmParser5::DoSpecial() { if (IsImportSymbolNames()) { - aNewName = SmLocalizedSymbolData::GetUiSymbolName(rName.subView(1)); - bReplace = true; + const SmSym* pSym + = SM_MOD()->GetSymbolManager().GetSymbolByExportName(rName.subView(1)); + if (pSym) + { + aNewName = pSym->GetName(); + bReplace = true; + } } else if (IsExportSymbolNames()) { - aNewName = SmLocalizedSymbolData::GetExportSymbolName(rName.subView(1)); - bReplace = true; + const SmSym* pSym = SM_MOD()->GetSymbolManager().GetSymbolByUiName(rName.subView(1)); + if (pSym) + { + aNewName = pSym->GetExportName(); + bReplace = true; + } } } if (!aNewName.isEmpty()) diff --git a/starmath/source/symbol.cxx b/starmath/source/symbol.cxx index a75b6a912670..5f81d0151d9a 100644 --- a/starmath/source/symbol.cxx +++ b/starmath/source/symbol.cxx @@ -120,23 +120,35 @@ SmSymbolManager& SmSymbolManager::operator = (const SmSymbolManager& rSymbolSetM return *this; } +SmSym* SmSymbolManager::GetSymbolByName(std::u16string_view rSymbolName) +{ + SmSym* pRes = GetSymbolByUiName(rSymbolName); + if (!pRes) + pRes = GetSymbolByExportName(rSymbolName); + return pRes; +} -SmSym *SmSymbolManager::GetSymbolByName(const OUString& rSymbolName) +SmSym *SmSymbolManager::GetSymbolByUiName(std::u16string_view rSymbolName) { + OUString aSymbolName(rSymbolName); SmSym *pRes = nullptr; - SymbolMap_t::iterator aIt( m_aSymbols.find( rSymbolName ) ); + SymbolMap_t::iterator aIt( m_aSymbols.find( aSymbolName ) ); if (aIt != m_aSymbols.end()) pRes = &aIt->second; - else + return pRes; +} + +SmSym* SmSymbolManager::GetSymbolByExportName(std::u16string_view rSymbolName) +{ + OUString aSymbolName(rSymbolName); + SmSym* pRes = nullptr; + for (auto& rPair : m_aSymbols) { - for (auto& rPair : m_aSymbols) + SmSym& rSymbol = rPair.second; + if (rSymbol.GetExportName() == aSymbolName) { - SmSym& rSymbol = rPair.second; - if (rSymbol.GetExportName() == rSymbolName) - { - pRes = &rSymbol; - break; - } + pRes = &rSymbol; + break; } } return pRes; @@ -161,7 +173,7 @@ bool SmSymbolManager::AddOrReplaceSymbol( const SmSym &rSymbol, bool bForceChang const OUString& aSymbolName( rSymbol.GetName() ); if (!aSymbolName.isEmpty() && !rSymbol.GetSymbolSetName().isEmpty()) { - const SmSym *pFound = GetSymbolByName( aSymbolName ); + const SmSym *pFound = GetSymbolByUiName( aSymbolName ); const bool bSymbolConflict = pFound && !pFound->IsEqualInUI( rSymbol ); // avoid having the same symbol name twice but with different symbols in use @@ -263,6 +275,7 @@ void SmSymbolManager::Load() OUString aSymbolName = "i" + rSym.GetName(); SmSym aSymbol( aSymbolName, aFont, rSym.GetCharacter(), aSymbolSetName, true /*bIsPredefined*/ ); + aSymbol.SetExportName("i" + rSym.GetExportName()); AddOrReplaceSymbol( aSymbol ); } |