summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2016-09-07 22:17:34 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2016-09-07 22:17:56 +0200
commit9d9e5b40c1a6d91323564e60b25ccf04df86db4b (patch)
tree5dc1d750be12c25111b59528056176ea01bc67c2
parent93b1279ce7aacc98ed102e0db30445db286b26e6 (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.docxbin0 -> 15004 bytes
-rw-r--r--sw/qa/extras/uiwriter/uiwriter.cxx11
-rw-r--r--sw/source/core/doc/docedt.cxx3
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
new file mode 100644
index 000000000000..a8787d49cc42
--- /dev/null
+++ b/sw/qa/extras/uiwriter/data/tdf78727.docx
Binary files differ
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()->