[Libreoffice-commits] core.git: Branch 'feature/cib_contract57' - 4 commits - include/o3tl sfx2/source sw/source

Samuel Mehrbrodt Samuel.Mehrbrodt at cib.de
Mon Jan 23 13:54:11 UTC 2017


 include/o3tl/make_unique.hxx           |   34 ++++++++++++++++++++++++++++
 sfx2/source/control/unoctitm.cxx       |   40 ++++++++++++++++++++++-----------
 sfx2/source/safemode/safemode.cxx      |    3 --
 sw/source/filter/ww8/docxsdrexport.cxx |    2 -
 sw/source/filter/ww8/docxsdrexport.hxx |    3 +-
 5 files changed, 65 insertions(+), 17 deletions(-)

New commits:
commit b420c0052039a82e651f4556ad153d277b6a5c77
Author: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
Date:   Mon Jan 23 14:28:21 2017 +0100

    Remove useless call
    
    Change-Id: Ifab0bd0961fa0bbad41b0b4b5e44575a85f0aeb3

diff --git a/sfx2/source/safemode/safemode.cxx b/sfx2/source/safemode/safemode.cxx
index 6d8dcf9..3a02f24 100644
--- a/sfx2/source/safemode/safemode.cxx
+++ b/sfx2/source/safemode/safemode.cxx
@@ -74,7 +74,6 @@ OUString SafeMode::getFilePath(const OUString& sFilename)
     rtl::Bootstrap::expandMacros(url);
 
     OUString aProfilePath;
-    FileBase::getSystemPathFromFileURL(url, aProfilePath);
     FileBase::getAbsoluteFileURL(url, sFilename, aProfilePath);
     return aProfilePath;
 }
commit dc6139c97752232e45fd11d450823f6a6adf9be3
Author: Samuel Mehrbrodt <Samuel.Mehrbrodt at cib.de>
Date:   Mon Jan 23 14:26:44 2017 +0100

    Fix mis-merge in safemode.cxx
    
    Change-Id: I78eef089759dc5053dd8e91c9994d9cec8dd1432

diff --git a/sfx2/source/safemode/safemode.cxx b/sfx2/source/safemode/safemode.cxx
index 609ebbd..6d8dcf9 100644
--- a/sfx2/source/safemode/safemode.cxx
+++ b/sfx2/source/safemode/safemode.cxx
@@ -70,7 +70,7 @@ bool SafeMode::removeRestartFlag()
 
 OUString SafeMode::getFilePath(const OUString& sFilename)
 {
-    OUString url("${$BRAND_BASE_DIR/" LIBO_ETC_FOLDER "/" SAL_CONFIGFILE("bootstrap") ":UserInstallation}/safemode");
+    OUString url("${$BRAND_BASE_DIR/" LIBO_ETC_FOLDER "/" SAL_CONFIGFILE("bootstrap") ":UserInstallation}/");
     rtl::Bootstrap::expandMacros(url);
 
     OUString aProfilePath;
commit 11cf1ca50d9bdee790d9082e51566864fbd23885
Author: Mike Kaganski <mike.kaganski at collabora.com>
Date:   Thu Nov 3 15:53:09 2016 +0300

    tdf#88023: Only warn about unavailable JRE once
    
    The underlying design is that there's a single JavaInteractionHandler
    instance owned by a JavaContext, and that JavaContext installed in
    Desktop::Main (desktop/source/app/app.cxx).
    
    This patch ensures that no additional JavaContext is created in
    SfxOfficeDispatch::dispatch*() functions unless they are used without
    preinstalled JavaContext.
    
    Thanks to Stephan Bergmann for guidance!
    
    Change-Id: I2569df221067a5b9bf1f6cd5d8f69b561316a170
    Reviewed-on: https://gerrit.libreoffice.org/30529
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/sfx2/source/control/unoctitm.cxx b/sfx2/source/control/unoctitm.cxx
index bba52c6..a720f18 100644
--- a/sfx2/source/control/unoctitm.cxx
+++ b/sfx2/source/control/unoctitm.cxx
@@ -26,6 +26,7 @@
 #include <svl/itemset.hxx>
 #include <svl/visitem.hxx>
 #include <svtools/javacontext.hxx>
+#include <svtools/javainteractionhandler.hxx>
 #include <svl/itempool.hxx>
 #include <tools/urlobj.hxx>
 #include <com/sun/star/util/URLTransformer.hpp>
@@ -63,6 +64,7 @@
 #include <sfx2/msgpool.hxx>
 #include <sfx2/objsh.hxx>
 
+#include <o3tl/make_unique.hxx>
 #include <boost/scoped_ptr.hpp>
 
 #include <iostream>
@@ -339,6 +341,29 @@ const ::com::sun::star::uno::Sequence< sal_Int8 >& SfxOfficeDispatch::impl_getSt
     return seqID ;
 }
 
+#if HAVE_FEATURE_JAVA
+// The JavaContext contains an interaction handler which is used when
+// the creation of a Java Virtual Machine fails. There shall only be one
+// user notification (message box) even if the same error (interaction)
+// reoccurs. The effect is, that if a user selects a menu entry than they
+// may get only one notification that a JRE is not selected.
+// This function checks if a JavaContext is already available (typically
+// created by Desktop::Main() in app.cxx), and creates new one if not.
+namespace {
+std::unique_ptr< css::uno::ContextLayer > EnsureJavaContext()
+{
+    css::uno::Reference< css::uno::XCurrentContext > xContext(css::uno::getCurrentContext());
+    if (xContext.is())
+    {
+        css::uno::Reference< css::task::XInteractionHandler > xHandler;
+        xContext->getValueByName(JAVA_INTERACTION_HANDLER_NAME) >>= xHandler;
+        if (xHandler.is())
+            return nullptr; // No need to add new layer: JavaContext already present
+    }
+    return o3tl::make_unique< css::uno::ContextLayer >(new svt::JavaContext(xContext));
+}
+}
+#endif
 
 void SAL_CALL SfxOfficeDispatch::dispatch( const ::com::sun::star::util::URL& aURL, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aArgs ) throw ( ::com::sun::star::uno::RuntimeException, std::exception )
 {
@@ -346,15 +371,7 @@ void SAL_CALL SfxOfficeDispatch::dispatch( const ::com::sun::star::util::URL& aU
     if ( pControllerItem )
     {
 #if HAVE_FEATURE_JAVA
-        // The JavaContext contains an interaction handler which is used when
-        // the creation of a Java Virtual Machine fails. The second parameter
-        // indicates, that there shall only be one user notification (message box)
-        // even if the same error (interaction) reoccurs. The effect is, that if a
-        // user selects a menu entry than they may get only one notification that
-        // a JRE is not selected.
-        com::sun::star::uno::ContextLayer layer(
-            new svt::JavaContext( com::sun::star::uno::getCurrentContext(),
-                                  true) );
+        std::unique_ptr< css::uno::ContextLayer > layer(EnsureJavaContext());
 #endif
         pControllerItem->dispatch( aURL, aArgs, ::com::sun::star::uno::Reference < ::com::sun::star::frame::XDispatchResultListener >() );
     }
@@ -368,10 +385,7 @@ void SAL_CALL SfxOfficeDispatch::dispatchWithNotification( const ::com::sun::sta
     if ( pControllerItem )
     {
 #if HAVE_FEATURE_JAVA
-        // see comment for SfxOfficeDispatch::dispatch
-        com::sun::star::uno::ContextLayer layer(
-            new svt::JavaContext( com::sun::star::uno::getCurrentContext(),
-                                  true) );
+        std::unique_ptr< css::uno::ContextLayer > layer(EnsureJavaContext());
 #endif
         pControllerItem->dispatch( aURL, aArgs, rListener );
     }
commit c3a9ad0d96bdd8c67b1755189162aafa1877417c
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Thu May 21 16:37:16 2015 +0100

    o3tl: add make_unique template till we can't use std::make_unique
    
    Change-Id: I48b26f0199e339badf7a0e2bed322ca701689d13
    Reviewed-on: https://gerrit.libreoffice.org/15846
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    Tested-by: Jenkins <ci at libreoffice.org>

diff --git a/include/o3tl/make_unique.hxx b/include/o3tl/make_unique.hxx
new file mode 100644
index 0000000..2be03e9
--- /dev/null
+++ b/include/o3tl/make_unique.hxx
@@ -0,0 +1,34 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_O3TL_MAKE_UNIQUE_HXX
+#define INCLUDED_O3TL_MAKE_UNIQUE_HXX
+
+#include <memory>
+#include <utility>
+
+namespace o3tl
+{
+
+/**
+ * Constructs an object of type T and wraps it in a std::unique_ptr.
+ *
+ * Can be replaced by std::make_unique when we allow C++14.
+ */
+template<typename T, typename... Args>
+typename std::unique_ptr<T> make_unique(Args&& ... args)
+{
+    return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
+}
+
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sw/source/filter/ww8/docxsdrexport.cxx b/sw/source/filter/ww8/docxsdrexport.cxx
index ff9d5d5..6ddd224 100644
--- a/sw/source/filter/ww8/docxsdrexport.cxx
+++ b/sw/source/filter/ww8/docxsdrexport.cxx
@@ -184,7 +184,7 @@ struct DocxSdrExport::Impl
 };
 
 DocxSdrExport::DocxSdrExport(DocxExport& rExport, sax_fastparser::FSHelperPtr pSerializer, oox::drawingml::DrawingML* pDrawingML)
-    : m_pImpl(std::make_shared<Impl>(*this, rExport, pSerializer, pDrawingML))
+    : m_pImpl(o3tl::make_unique<Impl>(*this, rExport, pSerializer, pDrawingML))
 {
 }
 
diff --git a/sw/source/filter/ww8/docxsdrexport.hxx b/sw/source/filter/ww8/docxsdrexport.hxx
index dd98d71..0a32f20 100644
--- a/sw/source/filter/ww8/docxsdrexport.hxx
+++ b/sw/source/filter/ww8/docxsdrexport.hxx
@@ -11,6 +11,7 @@
 #define INCLUDED_SW_SOURCE_FILTER_WW8_DOCXSDREXPORT_HXX
 
 #include <memory>
+#include <o3tl/make_unique.hxx>
 
 #include <com/sun/star/xml/dom/XDocument.hpp>
 #include <rtl/strbuf.hxx>
@@ -52,7 +53,7 @@ public:
 class DocxSdrExport
 {
     struct Impl;
-    std::shared_ptr<Impl> m_pImpl;
+    std::unique_ptr<Impl> m_pImpl;
 public:
     DocxSdrExport(DocxExport& rExport, sax_fastparser::FSHelperPtr pSerializer, oox::drawingml::DrawingML* pDrawingML);
     ~DocxSdrExport();


More information about the Libreoffice-commits mailing list