Kaydet (Commit) b2d156b6 authored tarafından Mike Kaganski's avatar Mike Kaganski

tdf#120362: Don't ask user to enable JVM when enumerating scripts

Since it wasn't an explicit user's intention to run something that requires
JVM, asking to enable it in case it's disabled is nonsense, and it happened
every first time in a LO session when user wanted to start e.g. Basic macro
using Tools->Macros->Run Macro... tool.

Change-Id: I5afae804e183c185472d41a2d419ec80b7955110
Reviewed-on: https://gerrit.libreoffice.org/61465
Tested-by: Jenkins
Reviewed-by: 's avatarMike Kaganski <mike.kaganski@collabora.com>
üst e056e30f
......@@ -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;
......
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment