summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--svx/source/unodraw/unoshap4.cxx12
1 files changed, 12 insertions, 0 deletions
diff --git a/svx/source/unodraw/unoshap4.cxx b/svx/source/unodraw/unoshap4.cxx
index 58ad9a6b2db0..712c43560803 100644
--- a/svx/source/unodraw/unoshap4.cxx
+++ b/svx/source/unodraw/unoshap4.cxx
@@ -30,6 +30,7 @@
#include <svx/svdomedia.hxx>
#include <svx/svdpool.hxx>
#include <comphelper/classids.hxx>
+#include <comphelper/DirectoryHelper.hxx>
#include <comphelper/embeddedobjectcontainer.hxx>
#include <comphelper/propertysequence.hxx>
#include <comphelper/propertyvalue.hxx>
@@ -822,6 +823,17 @@ bool SvxMediaShape::setPropertyValueImpl( const OUString& rName, const SfxItemPr
if( rValue >>= aURL )
{
bOk = true;
+ if ( aURL.startsWith("file:///") && !comphelper::DirectoryHelper::fileExists(aURL) )
+ {
+ comphelper::IEmbeddedHelper* pPersist = GetSdrObject()->getSdrModelFromSdrObject().GetPersist();
+ auto fileDirectoryEndIdx = pPersist->getDocumentBaseURL().lastIndexOf("/");
+ auto fileNameStartIdx = aURL.lastIndexOf("/");
+ if (fileDirectoryEndIdx != -1 && fileNameStartIdx != -1)
+ {
+ aURL = OUString::Concat(pPersist->getDocumentBaseURL().subView(0, fileDirectoryEndIdx + 1))
+ + aURL.subView(fileNameStartIdx + 1);
+ }
+ }
aItem.setURL( aURL, u""_ustr, referer_ );
}
}