sc/inc/spellcheckcontext.hxx | 2 +- sc/source/ui/view/gridwin.cxx | 2 ++ sc/source/ui/view/spellcheckcontext.cxx | 14 ++++++++------ 3 files changed, 11 insertions(+), 7 deletions(-)
New commits: commit 5245723d92e92773d4679b3cd60a70706e3b4782 Author: Michael Meeks <michael.me...@collabora.com> AuthorDate: Mon Oct 26 19:31:56 2020 +0000 Commit: Andras Timar <andras.ti...@collabora.com> CommitDate: Wed Oct 28 11:46:33 2020 +0100 Don't let sc's spell-checking EditEngine linger around as long. Attempted blind fix for problems with stale OutputDevice usage. Change-Id: Ifa9eb000907aa18e2007cc1020c269d97d182e72 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104848 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Andras Timar <andras.ti...@collabora.com> diff --git a/sc/inc/spellcheckcontext.hxx b/sc/inc/spellcheckcontext.hxx index 8e2392ef5ff1..d4a0e0162530 100644 --- a/sc/inc/spellcheckcontext.hxx +++ b/sc/inc/spellcheckcontext.hxx @@ -57,7 +57,7 @@ public: private: void ensureResults(SCCOL nCol, SCROW nRow); void resetCache(bool bContentChangeOnly = false); - void resetEngine(); + void setup(); }; } diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx index 9dfca179a4ed..3a7c0491133e 100644 --- a/sc/source/ui/view/gridwin.cxx +++ b/sc/source/ui/view/gridwin.cxx @@ -500,6 +500,8 @@ void ScGridWindow::dispose() mpDPFieldPopup.disposeAndClear(); aComboButton.SetOutputDevice(nullptr); + if (mpSpellCheckCxt) + mpSpellCheckCxt->reset(); mpSpellCheckCxt.reset(); vcl::Window::dispose(); diff --git a/sc/source/ui/view/spellcheckcontext.cxx b/sc/source/ui/view/spellcheckcontext.cxx index 8861e91a41e4..d75525d90b4d 100644 --- a/sc/source/ui/view/spellcheckcontext.cxx +++ b/sc/source/ui/view/spellcheckcontext.cxx @@ -269,7 +269,8 @@ void SpellCheckContext::reset() { meLanguage = ScGlobal::GetEditDefaultLanguage(); resetCache(); - resetEngine(); + mpEngine.reset(); + mpStatus.reset(); } void SpellCheckContext::resetForContentChange() @@ -279,8 +280,12 @@ void SpellCheckContext::resetForContentChange() void SpellCheckContext::ensureResults(SCCOL nCol, SCROW nRow) { - if (!mpEngine || !mpCache) + if (!mpEngine || !mpCache || + ScGlobal::GetEditDefaultLanguage() != meLanguage) + { reset(); + setup(); + } // perhaps compute the pivot rangelist once in some pivot-table change handler ? if (pDoc->HasPivotTable()) @@ -306,8 +311,6 @@ void SpellCheckContext::ensureResults(SCCOL nCol, SCROW nRow) return; } - if (ScGlobal::GetEditDefaultLanguage() != meLanguage) - reset(); // Cell content is either shared-string or EditTextObject @@ -366,7 +369,6 @@ void SpellCheckContext::ensureResults(SCCOL nCol, SCROW nRow) mpResult->set(nCol, nRow, pRanges.get()); mpCache->set(nCol, nRow, aCell, std::move(pRanges)); - } void SpellCheckContext::resetCache(bool bContentChangeOnly) @@ -384,7 +386,7 @@ void SpellCheckContext::resetCache(bool bContentChangeOnly) mpCache->clear(meLanguage); } -void SpellCheckContext::resetEngine() +void SpellCheckContext::setup() { mpEngine.reset(new ScTabEditEngine(pDoc)); mpStatus.reset(new SpellCheckStatus()); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits