summaryrefslogtreecommitdiff
path: root/cui/source/dialogs/scriptdlg.cxx
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2019-08-02 07:08:04 +1000
committerMike Kaganski <mike.kaganski@collabora.com>2019-08-02 02:02:34 +0200
commit1a1f4e73b7ab9e5b071aab74c8d7e27ba2b2d29c (patch)
tree7bd9142995a74e4e8d7e585cfac272731e2a3d88 /cui/source/dialogs/scriptdlg.cxx
parent02d16928bcd1eb2b6dfd7524ea9af591c0f5f2e0 (diff)
tdf#126643: avoid unnecessary asking for JRE in script organizer dialog
Use two-pass search for the needed language node; if it fails with Java interaction disabled, only then repeat the search with it enabled, like in commit f3ce30ec75a4d7116b9cd4d7b21d9aaa0e237eeb. Change-Id: Icde5dbeb552a6837af02182f7b8cbbc90765c5a5 Reviewed-on: https://gerrit.libreoffice.org/76831 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Diffstat (limited to 'cui/source/dialogs/scriptdlg.cxx')
-rw-r--r--cui/source/dialogs/scriptdlg.cxx26
1 files changed, 19 insertions, 7 deletions
diff --git a/cui/source/dialogs/scriptdlg.cxx b/cui/source/dialogs/scriptdlg.cxx
index 349ab2c7062c..5c4035fb01dc 100644
--- a/cui/source/dialogs/scriptdlg.cxx
+++ b/cui/source/dialogs/scriptdlg.cxx
@@ -24,6 +24,7 @@
#include <sfx2/objsh.hxx>
#include <vcl/svapp.hxx>
#include <vcl/weld.hxx>
+#include <uno/current_context.hxx>
#include <strings.hrc>
#include <bitmaps.hlst>
@@ -46,6 +47,7 @@
#include <com/sun/star/script/XInvocation.hpp>
#include <com/sun/star/document/XEmbeddedScripts.hpp>
+#include <comphelper/DisableInteractionHelper.hxx>
#include <comphelper/documentinfo.hxx>
#include <comphelper/processfactory.hxx>
@@ -243,14 +245,24 @@ SvxScriptOrgDialog::getLangNodeFromRootNode( Reference< browse::XBrowseNode > co
try
{
- Sequence < Reference< browse::XBrowseNode > > children = rootNode->getChildNodes();
- for ( sal_Int32 n = 0; n < children.getLength(); n++ )
+ auto tryFind = [&] {
+ const Sequence<Reference<browse::XBrowseNode>> children = rootNode->getChildNodes();
+ const auto it = std::find_if(children.begin(), children.end(),
+ [&](const Reference<browse::XBrowseNode>& child) {
+ return child->getName() == language;
+ });
+ return (it != children.end()) ? *it : nullptr;
+ };
{
- if ( children[ n ]->getName() == language )
- {
- langNode = children[ n ];
- break;
- }
+ // First try without Java interaction, to avoid warnings for non-JRE-dependent providers
+ css::uno::ContextLayer layer(
+ new comphelper::NoEnableJavaInteractionContext(css::uno::getCurrentContext()));
+ langNode = tryFind();
+ }
+ if (!langNode)
+ {
+ // Now try with Java interaction enabled
+ langNode = tryFind();
}
}
catch ( Exception& )