summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
authorVladislav Tarakanov <vladislav.tarakanov@bk.ru>2024-07-12 04:22:21 +0400
committerXisco Fauli <xiscofauli@libreoffice.org>2024-07-26 13:04:13 +0200
commitd875b5acdd50588d0d570890bd7eef6abb208199 (patch)
tree69391b05fac4cf41b296f21f99655af1c8236739 /svx
parent32d3d51bff4dfacacb3e05995647ecaa624e3919 (diff)
tdf#158510 Launch media from a presentation dir path
Added a check for the existence of a file at a given URL. If the specified file could not be found, the path formed from the directory containing the presentation file and the file name is used. Change-Id: Ia4124f4fa5e5cef19c81f325676749a2540e486a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/164023 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com> (cherry picked from commit fe897b36aef28dfe175461c43614e22588fcfd84) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170473 Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
Diffstat (limited to 'svx')
-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_ );
}
}