summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2016-09-07 22:17:34 +0200
committerCaolán McNamara <caolanm@redhat.com>2016-09-10 09:14:27 +0000
commitebd72cfc297ecfe617e9112f977a8ca12c2cacee (patch)
tree04d175efce27bb13c544d50de09f9e0389f17088
parent7f037e2230d059320aff8610b6d24c0a44a71e41 (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! (cherry picked from commit 9d9e5b40c1a6d91323564e60b25ccf04df86db4b) Conflicts: sw/qa/extras/uiwriter/uiwriter.cxx Change-Id: I26e23550df085511e0e87f593f1a461057413d0e Reviewed-on: https://gerrit.libreoffice.org/28776 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--sw/qa/extras/uiwriter/data/tdf78727.docxbin0 -> 15004 bytes
-rw-r--r--sw/qa/extras/uiwriter/uiwriter.cxx12
-rw-r--r--sw/source/core/doc/docedt.cxx3
3 files changed, 14 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 57d53fc8f4d0..5dcb81eed875 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -199,6 +199,7 @@ public:
void testTdf99004();
void testTdf84695();
void testTdf84695NormalChar();
+ void testTdf78727();
CPPUNIT_TEST_SUITE(SwUiWriterTest);
CPPUNIT_TEST(testReplaceForward);
@@ -300,6 +301,7 @@ public:
CPPUNIT_TEST(testTdf99004);
CPPUNIT_TEST(testTdf84695);
CPPUNIT_TEST(testTdf84695NormalChar);
+ CPPUNIT_TEST(testTdf78727);
CPPUNIT_TEST_SUITE_END();
private:
@@ -3704,6 +3706,16 @@ void SwUiWriterTest::testTdf84695NormalChar()
CPPUNIT_ASSERT_EQUAL(OUString("a"), xShape->getString());
}
+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.
+ std::set<const SwFrameFormat*> aSet;
+ CPPUNIT_ASSERT(SwTextBoxHelper::getCount(pPage, aSet) > 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 0f55ea6b3724..a62ed4cb2c54 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()->