diff options
-rw-r--r-- | sw/source/core/edit/edlingu.cxx | 5 | ||||
-rw-r--r-- | sw/source/uibase/lingu/olmenu.cxx | 15 | ||||
-rw-r--r-- | sw/source/uibase/shells/textsh1.cxx | 19 |
3 files changed, 22 insertions, 17 deletions
diff --git a/sw/source/core/edit/edlingu.cxx b/sw/source/core/edit/edlingu.cxx index 1c03f321de69..f0220a8e7ef2 100644 --- a/sw/source/core/edit/edlingu.cxx +++ b/sw/source/core/edit/edlingu.cxx @@ -897,12 +897,13 @@ uno::Reference< XSpellAlternatives > return nullptr; SwPaM* pCursor = GetCursor(); SwPosition aPos( *pCursor->GetPoint() ); - Point aPt( *pPt ); SwCursorMoveState eTmpState( MV_SETONLYTEXT ); SwTextNode *pNode = nullptr; SwWrongList *pWrong = nullptr; - if (GetLayout()->GetCursorOfst( &aPos, aPt, &eTmpState )) + if (pPt && GetLayout()->GetCursorOfst( &aPos, *(const_cast<Point*>(pPt)), &eTmpState )) pNode = aPos.nNode.GetNode().GetTextNode(); + if (nullptr == pNode) + pNode = pCursor->GetNode().GetTextNode(); if (nullptr != pNode) pWrong = pNode->GetWrong(); if (nullptr != pWrong && !pNode->IsInProtectSect()) diff --git a/sw/source/uibase/lingu/olmenu.cxx b/sw/source/uibase/lingu/olmenu.cxx index 4d2e83131636..57260b5b4dd7 100644 --- a/sw/source/uibase/lingu/olmenu.cxx +++ b/sw/source/uibase/lingu/olmenu.cxx @@ -716,19 +716,8 @@ void SwSpellPopup::Execute( sal_uInt16 nId ) } else if (nId == m_nIgnoreWordId) { - uno::Reference< linguistic2::XDictionary > xDictionary = LinguMgr::GetIgnoreAllList(); - if (m_bGrammarResults) { - SfxStringItem aIgnoreString(FN_PARAM_1, "IgnoreAll_Grammar"); - m_pSh->GetView().GetViewFrame()->GetDispatcher()->ExecuteList(SID_APPLY_SPELLCHECKING, SfxCallMode::SYNCHRON, { &aIgnoreString }); - } else { - OUString sWord(m_xSpellAlt->getWord()); - linguistic::DictionaryError nAddRes = linguistic::AddEntryToDic( xDictionary, - sWord, false, OUString() ); - if (linguistic::DictionaryError::NONE != nAddRes && !xDictionary->getEntry(sWord).is()) - { - SvxDicError(m_pSh->GetView().GetFrameWeld(), nAddRes); - } - } + SfxStringItem aIgnoreString(FN_PARAM_1, m_bGrammarResults ? OUString("IgnoreAll_Grammar") : OUString("IgnoreAll_Spelling")); + m_pSh->GetView().GetViewFrame()->GetDispatcher()->ExecuteList(SID_APPLY_SPELLCHECKING, SfxCallMode::SYNCHRON, { &aIgnoreString }); } else if ((MN_DICTIONARIES_START <= nId && nId <= MN_DICTIONARIES_END) || nId == m_nAddId) { diff --git a/sw/source/uibase/shells/textsh1.cxx b/sw/source/uibase/shells/textsh1.cxx index 510c25432e32..bff08a595f18 100644 --- a/sw/source/uibase/shells/textsh1.cxx +++ b/sw/source/uibase/shells/textsh1.cxx @@ -105,6 +105,7 @@ #include <com/sun/star/uno/Any.hxx> #include <com/sun/star/linguistic2/ProofreadingResult.hpp> #include <com/sun/star/linguistic2/XDictionary.hpp> +#include <com/sun/star/linguistic2/XSpellAlternatives.hpp> #include <editeng/unolingu.hxx> #include <unotools/syslocaleoptions.hxx> #include <doc.hxx> @@ -126,6 +127,7 @@ #include <memory> #include <xmloff/odffields.hxx> #include <bookmrk.hxx> +#include <linguistic/misc.hxx> using namespace ::com::sun::star; using namespace com::sun::star::beans; @@ -1440,7 +1442,7 @@ void SwTextShell::Execute(SfxRequest &rReq) const OUString sIgnoreString("Ignore"); const OUString sIgnoreAllPrefix("IgnoreAll_"); - //const OUString sSpellingRule("Spelling"); + const OUString sSpellingRule("Spelling"); const OUString sGrammarRule("Grammar"); //const OUString aReplacePrefix("Replace_"); @@ -1466,7 +1468,7 @@ void SwTextShell::Execute(SfxRequest &rReq) bool bCorrectionRes = rWrtSh.GetGrammarCorrection( aGrammarCheckRes, nErrorPosInText, nErrorInResult, aSuggestions, nullptr, aToFill ); if(bCorrectionRes) { - try{ + try { uno::Reference< linguistic2::XDictionary > xDictionary = LinguMgr::GetIgnoreAllList(); aGrammarCheckRes.xProofreader->ignoreRule( aGrammarCheckRes.aErrors[ nErrorInResult ].aRuleIdentifier, @@ -1484,6 +1486,19 @@ void SwTextShell::Execute(SfxRequest &rReq) } } } + else if (sApplyText == sSpellingRule) + { + SwRect aToFill; + uno::Reference< linguistic2::XSpellAlternatives > xSpellAlt( rWrtSh.GetCorrection(nullptr, aToFill) ); + uno::Reference< linguistic2::XDictionary > xDictionary = LinguMgr::GetIgnoreAllList(); + OUString sWord(xSpellAlt->getWord()); + linguistic::DictionaryError nAddRes = linguistic::AddEntryToDic( xDictionary, + sWord, false, OUString() ); + if (linguistic::DictionaryError::NONE != nAddRes && !xDictionary->getEntry(sWord).is()) + { + SvxDicError(rWrtSh.GetView().GetFrameWeld(), nAddRes); + } + } } } break; |