summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2020-04-15 12:27:55 +0200
committerMiklos Vajna <vmiklos@collabora.com>2020-04-15 15:50:07 +0200
commit77870621351acdeb116f7213bf8a6b064f422590 (patch)
tree28ff760426af5934437ca7633dd9f3f3eb8d6124
parentd09a35bc10251ef0b66e06c6ffbb2d16332b318b (diff)
sw: avoid calling SwView::GetWrtShell() unconditionally from the SwView ctor
Regression from commit dfcfdf47b5da6a11b2c3118a0f63cc48c10c2cd7 (lok: get spelling context menu on long press, 2019-10-20), the problem was that GetWrtShell() returns a reference, and the underlying pointer can be nullptr till the SwView ctor is in progress. Fix the problem by not caring about spelling till the initial view is ready, that still provides the cursor position. (cherry picked from commit ae3342857350c805f536c1af2f560a117be12da8) Conflicts: sw/qa/extras/tiledrendering/tiledrendering.cxx Change-Id: I5580a1b36b83e0a4cb8495f41e7087c784f6c83c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92268 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
-rw-r--r--sw/qa/extras/tiledrendering/data/fieldmark.docxbin0 -> 13174 bytes
-rw-r--r--sw/qa/extras/tiledrendering/tiledrendering.cxx9
-rw-r--r--sw/source/core/crsr/viscrs.cxx2
3 files changed, 9 insertions, 2 deletions
diff --git a/sw/qa/extras/tiledrendering/data/fieldmark.docx b/sw/qa/extras/tiledrendering/data/fieldmark.docx
new file mode 100644
index 000000000000..02748bb7e182
--- /dev/null
+++ b/sw/qa/extras/tiledrendering/data/fieldmark.docx
Binary files differ
diff --git a/sw/qa/extras/tiledrendering/tiledrendering.cxx b/sw/qa/extras/tiledrendering/tiledrendering.cxx
index e1fdbcc4b97b..2771b76fda79 100644
--- a/sw/qa/extras/tiledrendering/tiledrendering.cxx
+++ b/sw/qa/extras/tiledrendering/tiledrendering.cxx
@@ -122,6 +122,7 @@ public:
void testDeselectCustomShape();
void testHyperlink();
void testRedlineNotificationDuringSave();
+ void testFieldmark();
CPPUNIT_TEST_SUITE(SwTiledRenderingTest);
CPPUNIT_TEST(testRegisterCallback);
@@ -185,6 +186,7 @@ public:
CPPUNIT_TEST(testDeselectCustomShape);
CPPUNIT_TEST(testHyperlink);
CPPUNIT_TEST(testRedlineNotificationDuringSave);
+ CPPUNIT_TEST(testFieldmark);
CPPUNIT_TEST_SUITE_END();
private:
@@ -2489,7 +2491,6 @@ void SwTiledRenderingTest::testHyperlink()
CPPUNIT_ASSERT_EQUAL(OString("http://example.com/"), m_sHyperlinkLink);
}
-
void SwTiledRenderingTest::testRedlineNotificationDuringSave()
{
// Load a document with redlines which are hidden at a layout level.
@@ -2508,6 +2509,12 @@ void SwTiledRenderingTest::testRedlineNotificationDuringSave()
xStorable->storeToURL(maTempFile.GetURL(), aMediaDescriptor.getAsConstPropertyValueList());
}
+void SwTiledRenderingTest::testFieldmark()
+{
+ // Without the accompanying fix in place, this crashed on load.
+ createDoc("fieldmark.docx");
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(SwTiledRenderingTest);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/source/core/crsr/viscrs.cxx b/sw/source/core/crsr/viscrs.cxx
index 62f7f033da63..6161c1994822 100644
--- a/sw/source/core/crsr/viscrs.cxx
+++ b/sw/source/core/crsr/viscrs.cxx
@@ -232,7 +232,7 @@ void SwVisibleCursor::SetPosAndShow(SfxViewShell const * pViewShell)
// is cursor at a mispelled word ?
bool bIsWrong = false;
- if (pView)
+ if (pView && pView->GetWrtShellPtr())
{
const SwViewOption* pVOpt = pView->GetWrtShell().GetViewOptions();
if(pVOpt && pVOpt->IsOnlineSpell())