[Libreoffice-commits] core.git: cui/source

Mike Kaganski (via logerrit) logerrit at kemper.freedesktop.org
Fri Aug 2 00:03:23 UTC 2019


 cui/source/dialogs/scriptdlg.cxx |   26 +++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)

New commits:
commit 1a1f4e73b7ab9e5b071aab74c8d7e27ba2b2d29c
Author:     Mike Kaganski <mike.kaganski at collabora.com>
AuthorDate: Fri Aug 2 07:08:04 2019 +1000
Commit:     Mike Kaganski <mike.kaganski at collabora.com>
CommitDate: Fri Aug 2 02:02:34 2019 +0200

    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 at collabora.com>

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& )


More information about the Libreoffice-commits mailing list