summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormerttumer <mert.tumer@collabora.com>2021-04-26 08:12:11 +0300
committerMert Tumer <mert.tumer@collabora.com>2021-04-26 14:17:05 +0200
commit3f754470815e0dc5ac169a480931282107aad0f9 (patch)
tree6181b40931d0b20a727cd3826d2232de7b1a8fc1
parenta03308be5096b95edc77d22837fb6acde2e1b0f3 (diff)
lok: Interaction handler for FilterOptions
This will enable Text Import Dialog to be executed before the document is loaded Change-Id: I263e69f0739f4971f4c4eec032ebf22ffbdeebb7 Signed-off-by: merttumer <mert.tumer@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/114638 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
-rw-r--r--desktop/source/lib/lokinteractionhandler.cxx23
-rw-r--r--desktop/source/lib/lokinteractionhandler.hxx1
-rw-r--r--sfx2/source/doc/objstor.cxx3
3 files changed, 26 insertions, 1 deletions
diff --git a/desktop/source/lib/lokinteractionhandler.cxx b/desktop/source/lib/lokinteractionhandler.cxx
index 3ee9c891f6ea..ad480964616c 100644
--- a/desktop/source/lib/lokinteractionhandler.cxx
+++ b/desktop/source/lib/lokinteractionhandler.cxx
@@ -41,6 +41,8 @@
#include <com/sun/star/task/DocumentPasswordRequest2.hpp>
#include <com/sun/star/task/DocumentMSPasswordRequest2.hpp>
+#include <com/sun/star/document/FilterOptionsRequest.hpp>
+
#include "../../inc/lib/init.hxx"
#include <LibreOfficeKit/LibreOfficeKitEnums.h>
@@ -330,6 +332,24 @@ bool LOKInteractionHandler::handlePasswordRequest(const uno::Sequence<uno::Refer
return true;
}
+bool LOKInteractionHandler::handleFilterOptionsRequest(const uno::Reference<task::XInteractionRequest>& xRequest)
+{
+ document::FilterOptionsRequest aFilterOptionsRequest;
+ uno::Any const request(xRequest->getRequest());
+ if (request >>= aFilterOptionsRequest)
+ {
+ uno::Reference< task::XInteractionHandler2 > xInteraction(
+ task::InteractionHandler::createWithParent(
+ ::comphelper::getProcessComponentContext(), nullptr));
+
+ if (xInteraction.is())
+ xInteraction->handleInteractionRequest(xRequest);
+
+ return true;
+ }
+ return false;
+}
+
sal_Bool SAL_CALL LOKInteractionHandler::handleInteractionRequest(
const uno::Reference<task::XInteractionRequest>& xRequest)
{
@@ -345,6 +365,9 @@ sal_Bool SAL_CALL LOKInteractionHandler::handleInteractionRequest(
if (handlePasswordRequest(rContinuations, request))
return true;
+ if (handleFilterOptionsRequest(xRequest))
+ return true;
+
task::DocumentMacroConfirmationRequest aConfirmRequest;
if (request >>= aConfirmRequest)
{
diff --git a/desktop/source/lib/lokinteractionhandler.hxx b/desktop/source/lib/lokinteractionhandler.hxx
index f6dc441327d8..dc827b33d78f 100644
--- a/desktop/source/lib/lokinteractionhandler.hxx
+++ b/desktop/source/lib/lokinteractionhandler.hxx
@@ -76,6 +76,7 @@ private:
bool handleIOException(const css::uno::Sequence<css::uno::Reference<css::task::XInteractionContinuation>> &rContinuations, const css::uno::Any& rRequest);
bool handleNetworkException(const css::uno::Sequence<css::uno::Reference<css::task::XInteractionContinuation>> &rContinuations, const css::uno::Any& rRequest);
bool handlePasswordRequest(const css::uno::Sequence<css::uno::Reference<css::task::XInteractionContinuation>> &rContinuations, const css::uno::Any& rRequest);
+ bool handleFilterOptionsRequest(const ::com::sun::star::uno::Reference<::com::sun::star::task::XInteractionRequest>& Request);
public:
void SetPassword(char const* pPassword);
diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx
index 9e54c3771f92..0a2dd750dad7 100644
--- a/sfx2/source/doc/objstor.cxx
+++ b/sfx2/source/doc/objstor.cxx
@@ -874,7 +874,8 @@ ErrCode SfxObjectShell::HandleFilter( SfxMedium* pMedium, SfxObjectShell const *
SfxItemSet* pSet = pMedium->GetItemSet();
const SfxStringItem* pOptions = SfxItemSet::GetItem<SfxStringItem>(pSet, SID_FILE_FILTEROPTIONS, false);
const SfxUnoAnyItem* pData = SfxItemSet::GetItem<SfxUnoAnyItem>(pSet, SID_FILTER_DATA, false);
- if ( !pData && !pOptions )
+ const bool bTiledRendering = comphelper::LibreOfficeKit::isActive();
+ if ( !pData && (bTiledRendering || !pOptions) )
{
css::uno::Reference< XMultiServiceFactory > xServiceManager = ::comphelper::getProcessServiceFactory();
css::uno::Reference< XNameAccess > xFilterCFG;