summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2015-06-11 12:43:17 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2015-06-11 15:40:05 +0200
commitddaca012d2715e5270dfeef43452e07aa7a9508c (patch)
tree670fc07cd9bb4522e96388bad8030d5e9b5aac38
parent3bd57cc2c0cabf33799edc57d3dd1c90c7857ecd (diff)
SwDocShell: re-store embedded data source def only when location changes
Change-Id: Ic667491026e9e88a72253aa079c77b8079cac588
-rw-r--r--sw/qa/extras/uiwriter/uiwriter.cxx5
-rw-r--r--sw/source/uibase/app/docsh.cxx3
2 files changed, 7 insertions, 1 deletions
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx
index d368f94b1fc4..b416777669eb 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -1091,6 +1091,11 @@ void SwUiWriterTest::testEmbeddedDataSource()
mxComponent->dispose();
mxComponent.clear();
CPPUNIT_ASSERT(!xDatabaseContext->hasByName("calc-data-source"));
+
+ // Now open again the saved result, and instead of 'save as', just 'save'.
+ mxComponent = loadFromDesktop(maTempFile.GetURL(), "com.sun.star.text.TextDocument");
+ uno::Reference<frame::XStorable> xStorable(mxComponent, uno::UNO_QUERY);
+ xStorable->store();
}
void SwUiWriterTest::testUnoCursorPointer()
diff --git a/sw/source/uibase/app/docsh.cxx b/sw/source/uibase/app/docsh.cxx
index 190135579344..55e3b7439c06 100644
--- a/sw/source/uibase/app/docsh.cxx
+++ b/sw/source/uibase/app/docsh.cxx
@@ -420,7 +420,8 @@ bool SwDocShell::SaveAs( SfxMedium& rMedium )
CalcLayoutForOLEObjects(); // format for OLE objets
- if (!m_pDoc->GetDBManager()->getEmbeddedName().isEmpty())
+ bool bURLChanged = !GetMedium() || GetMedium()->GetURLObject() != rMedium.GetURLObject();
+ if (!m_pDoc->GetDBManager()->getEmbeddedName().isEmpty() && bURLChanged)
{
// We have an embedded data source definition, need to re-store it,
// otherwise relative references will break when the new file is in a