diff options
-rw-r--r-- | cui/source/customize/cfgutil.cxx | 35 | ||||
-rw-r--r-- | stoc/source/javavm/javavm.cxx | 7 |
2 files changed, 42 insertions, 0 deletions
diff --git a/cui/source/customize/cfgutil.cxx b/cui/source/customize/cfgutil.cxx index 4e89b9c7a2d4..56d91c1eaf82 100644 --- a/cui/source/customize/cfgutil.cxx +++ b/cui/source/customize/cfgutil.cxx @@ -65,6 +65,7 @@ #include <vcl/help.hxx> #include <vcl/vclmedit.hxx> #include <o3tl/make_unique.hxx> +#include <uno/current_context.hxx> using namespace ::com::sun::star; using namespace ::com::sun::star::uno; @@ -541,6 +542,36 @@ namespace } } +namespace +{ +class NoEnableJavaInteractionContext : public cppu::WeakImplHelper<css::uno::XCurrentContext> +{ +public: + explicit NoEnableJavaInteractionContext( + css::uno::Reference<css::uno::XCurrentContext> const& xContext) + : mxContext(xContext) + { + } + NoEnableJavaInteractionContext(const NoEnableJavaInteractionContext&) = delete; + NoEnableJavaInteractionContext& operator=(const NoEnableJavaInteractionContext&) = delete; + +private: + virtual ~NoEnableJavaInteractionContext() override {} + + virtual css::uno::Any SAL_CALL getValueByName(OUString const& Name) override + { + if (Name == "DontEnableJava") + return css::uno::Any(true); + else if (mxContext.is()) + return mxContext->getValueByName(Name); + else + return css::uno::Any(); + } + + css::uno::Reference<css::uno::XCurrentContext> mxContext; +}; + +} // namespace void SfxConfigGroupListBox::FillScriptList(const css::uno::Reference< css::script::browse::XBrowseNode >& xRootNode, SvTreeListEntry* pParentEntry, bool bCheapChildrenOnDemand) @@ -548,6 +579,10 @@ void SfxConfigGroupListBox::FillScriptList(const css::uno::Reference< css::scrip try { if ( xRootNode->hasChildNodes() ) { + // tdf#120362: Don't ask to enable disabled Java when filling script list + css::uno::ContextLayer layer( + new NoEnableJavaInteractionContext(css::uno::getCurrentContext())); + Sequence< Reference< browse::XBrowseNode > > children = xRootNode->getChildNodes(); bool bIsRootNode = false; diff --git a/stoc/source/javavm/javavm.cxx b/stoc/source/javavm/javavm.cxx index 968e776be2a0..2bf1fbf55229 100644 --- a/stoc/source/javavm/javavm.cxx +++ b/stoc/source/javavm/javavm.cxx @@ -778,6 +778,13 @@ JavaVirtualMachine::getJavaVM(css::uno::Sequence< sal_Int8 > const & rProcessId) } case JFW_E_JAVA_DISABLED: { + bool bDontEnableJava = false; + auto xContext(css::uno::getCurrentContext()); + if (xContext.is()) + xContext->getValueByName("DontEnableJava") >>= bDontEnableJava; + if (bDontEnableJava) + return css::uno::Any(); + //QueryBox: //%PRODUCTNAME requires a Java runtime environment (JRE) to perform //this task. However, use of a JRE has been disabled. Do you want to |