From 8bf44b9cdceb7926fe52ef0bd4a38af24e7c700a Mon Sep 17 00:00:00 2001 From: Tibor Nagy Date: Mon, 14 Jun 2021 16:06:55 +0200 Subject: tdf#142590 PPTX import: fix custom slide show use as default MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If the PPTX file contains a custom slideshow, which set by default and opening in Impress, this setting wasn't imported. See also commit 312334f8488a668e9b5302959b60292ce151e4fc "tdf#47365 PPTX export: support loop attribute" and commit a4b66458a7b8da2f5580014813e5dabe3fa670b6 "tdf#125071 PPTX: fix missing custom slide show export". Change-Id: I9c2b3773f6883ee795f119df5b8534fcdfa6618f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117172 Tested-by: László Németh Reviewed-by: László Németh --- oox/source/ppt/presPropsfragmenthandler.cxx | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'oox/source') diff --git a/oox/source/ppt/presPropsfragmenthandler.cxx b/oox/source/ppt/presPropsfragmenthandler.cxx index 53d831b60ae9..47965050b164 100644 --- a/oox/source/ppt/presPropsfragmenthandler.cxx +++ b/oox/source/ppt/presPropsfragmenthandler.cxx @@ -10,6 +10,9 @@ #include #include #include +#include +#include +#include #include #include @@ -33,6 +36,17 @@ void PresPropsFragmentHandler::finalizeImport() css::uno::Reference xPresentationProps( xPresentationSupplier->getPresentation(), css::uno::UNO_QUERY_THROW); xPresentationProps->setPropertyValue("IsEndless", css::uno::Any(m_bLoop)); + + if (!m_sId.isEmpty()) + { + css::uno::Reference + XCustPresentationSupplier(getFilter().getModel(), css::uno::UNO_QUERY_THROW); + css::uno::Reference mxCustShows; + mxCustShows = XCustPresentationSupplier->getCustomPresentations(); + const css::uno::Sequence aNameSeq(mxCustShows->getElementNames()); + xPresentationProps->setPropertyValue("CustomShow", + css::uno::Any(aNameSeq[m_sId.toInt32()])); + } } core::ContextHandlerRef PresPropsFragmentHandler::onCreateContext(sal_Int32 aElementToken, @@ -45,6 +59,9 @@ core::ContextHandlerRef PresPropsFragmentHandler::onCreateContext(sal_Int32 aEle case PPT_TOKEN(showPr): m_bLoop = rAttribs.getBool(XML_loop, false); return this; + case PPT_TOKEN(custShow): + m_sId = rAttribs.getString(XML_id).get(); + return this; } return this; } -- cgit