diff options
author | Vladislav Tarakanov <vladislav.tarakanov@bk.ru> | 2024-07-12 04:22:21 +0400 |
---|---|---|
committer | Xisco Fauli <xiscofauli@libreoffice.org> | 2024-07-26 13:04:13 +0200 |
commit | d875b5acdd50588d0d570890bd7eef6abb208199 (patch) | |
tree | 69391b05fac4cf41b296f21f99655af1c8236739 /svx | |
parent | 32d3d51bff4dfacacb3e05995647ecaa624e3919 (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.cxx | 12 |
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_ ); } } |