diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2016-09-07 22:17:34 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2016-09-07 22:17:56 +0200 |
commit | 9d9e5b40c1a6d91323564e60b25ccf04df86db4b (patch) | |
tree | 5dc1d750be12c25111b59528056176ea01bc67c2 | |
parent | 93b1279ce7aacc98ed102e0db30445db286b26e6 (diff) |
tdf#78727 sw: fix missing textbox text when anchored inside flying table
It was missing as the shape text range was deleted twice, as
DelFlyInRange() thought both the fly and the draw frame format own its
contents range, while only the fly one does (when called by
SwDoc::MakeFlyAndMove(), called by SwXText::convertToTextFrame()).
Thanks Red Hat for the pizza!
Change-Id: I26e23550df085511e0e87f593f1a461057413d0e
-rw-r--r-- | sw/qa/extras/uiwriter/data/tdf78727.docx | bin | 0 -> 15004 bytes | |||
-rw-r--r-- | sw/qa/extras/uiwriter/uiwriter.cxx | 11 | ||||
-rw-r--r-- | sw/source/core/doc/docedt.cxx | 3 |
3 files changed, 13 insertions, 1 deletions
diff --git a/sw/qa/extras/uiwriter/data/tdf78727.docx b/sw/qa/extras/uiwriter/data/tdf78727.docx Binary files differnew file mode 100644 index 000000000000..a8787d49cc42 --- /dev/null +++ b/sw/qa/extras/uiwriter/data/tdf78727.docx diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx index 875c2c184851..8ff9436570c5 100644 --- a/sw/qa/extras/uiwriter/uiwriter.cxx +++ b/sw/qa/extras/uiwriter/uiwriter.cxx @@ -204,6 +204,7 @@ public: void testTableStyleUndo(); void testRedlineParam(); void testRedlineViewAuthor(); + void testTdf78727(); CPPUNIT_TEST_SUITE(SwUiWriterTest); CPPUNIT_TEST(testReplaceForward); @@ -309,6 +310,7 @@ public: CPPUNIT_TEST(testTableStyleUndo); CPPUNIT_TEST(testRedlineParam); CPPUNIT_TEST(testRedlineViewAuthor); + CPPUNIT_TEST(testTdf78727); CPPUNIT_TEST_SUITE_END(); private: @@ -3899,6 +3901,15 @@ void SwUiWriterTest::testRedlineViewAuthor() CPPUNIT_ASSERT_EQUAL(aAuthor, xField->getPropertyValue("Author").get<OUString>()); } +void SwUiWriterTest::testTdf78727() +{ + SwDoc* pDoc = createDoc("tdf78727.docx"); + SdrPage* pPage = pDoc->getIDocumentDrawModelAccess().GetDrawModel()->GetPage(0); + // This was 1: make sure we don't loose the TextBox anchored inside the + // table that is moved inside a text frame. + CPPUNIT_ASSERT(SwTextBoxHelper::getCount(pPage) > 1); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SwUiWriterTest); CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/sw/source/core/doc/docedt.cxx b/sw/source/core/doc/docedt.cxx index 49e940c5c3fc..88e13c62abdc 100644 --- a/sw/source/core/doc/docedt.cxx +++ b/sw/source/core/doc/docedt.cxx @@ -212,7 +212,8 @@ void DelFlyInRange( const SwNodeIndex& rMkNdIdx, { // If the Fly is deleted, all Flys in its content have to be deleted too. const SwFormatContent &rContent = pFormat->GetContent(); - if( rContent.GetContentIdx() ) + // But only fly formats own their content, not draw formats. + if (rContent.GetContentIdx() && pFormat->Which() == RES_FLYFRMFMT) { DelFlyInRange( *rContent.GetContentIdx(), SwNodeIndex( *rContent.GetContentIdx()-> |