[Libreoffice-commits] core.git: 2 commits - cui/source qadevOOo/tests sfx2/source

Stephan Bergmann sbergman at redhat.com
Tue Feb 4 03:23:50 PST 2014


 cui/source/customize/cfg.cxx                          |   34 ++++++------------
 qadevOOo/tests/java/mod/_sfx/AppDispatchProvider.java |    2 +
 sfx2/source/appl/appdispatchprovider.cxx              |   34 +++++++++++-------
 3 files changed, 36 insertions(+), 34 deletions(-)

New commits:
commit 20c207905f5e9a38f9e06488ab5488c5c21c24e4
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Feb 3 16:58:19 2014 +0100

    Simplify showKeyConfigTabPage
    
    Change-Id: I31f7dd7ded3d319ba67e38f530128e28c265b7d5

diff --git a/cui/source/customize/cfg.cxx b/cui/source/customize/cfg.cxx
index 738757a..d4f5361 100644
--- a/cui/source/customize/cfg.cxx
+++ b/cui/source/customize/cfg.cxx
@@ -749,30 +749,22 @@ SfxTabPage *CreateSvxEventConfigPage( Window *pParent, const SfxItemSet& rSet )
     return new SvxEventConfigPage( pParent, rSet, SvxEventConfigPage::EarlyInit() );
 }
 
-sal_Bool impl_showKeyConfigTabPage( const css::uno::Reference< css::frame::XFrame >& xFrame )
-{
-    static OUString MODULEID_STARTMODULE      ("com.sun.star.frame.StartModule"        );
+namespace {
 
-    try
+bool showKeyConfigTabPage( const css::uno::Reference< css::frame::XFrame >& xFrame )
+{
+    if (!xFrame.is())
     {
-        css::uno::Reference< css::uno::XComponentContext > xContext = ::comphelper::getProcessComponentContext();
-        css::uno::Reference< css::frame::XDesktop2 >       xDesktop = css::frame::Desktop::create( xContext );
-        css::uno::Reference< css::frame::XModuleManager2 >      xMM = css::frame::ModuleManager::create(xContext);
-
-        if (xFrame.is())
-        {
-            OUString sModuleId = xMM->identify(xFrame);
-            if (
-                ( !sModuleId.isEmpty()                 ) &&
-                (!sModuleId.equals(MODULEID_STARTMODULE))
-               )
-               return sal_True;
-        }
+        return false;
     }
-    catch(const css::uno::Exception&)
-        {}
+    OUString sModuleId(
+        css::frame::ModuleManager::create(
+            comphelper::getProcessComponentContext())
+        ->identify(xFrame));
+    return !sModuleId.isEmpty()
+        && sModuleId != "com.sun.star.frame.StartModule";
+}
 
-    return sal_False;
 }
 
 /******************************************************************************
@@ -815,7 +807,7 @@ void SvxConfigDialog::SetFrame(const ::com::sun::star::uno::Reference< ::com::su
 {
     m_xFrame = xFrame;
 
-    if (!impl_showKeyConfigTabPage( xFrame ))
+    if (!showKeyConfigTabPage( xFrame ))
         RemoveTabPage(m_nKeyboardPageId);
 }
 
commit 8f50196ef1ba0cc03904e18cc5b034074f92aa4e
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Tue Feb 4 10:16:07 2014 +0100

    *_AppDispatchProvider_get_implementation cannot bypass XInitialization
    
    ...as SfxAppDispatchProvider implements new-style service
    css.frame.AppDispatchProvider that doesn't declare any non-default ctors (which
    looks broken, though) and old-style service css.frame.DispatchProvicer.
    
    (And fix the test code to pass in meaningful XInitialization arguments.)
    
    Change-Id: Ifcc32d17f6b96ade2acc40ccdb60f7bad2d503a4

diff --git a/qadevOOo/tests/java/mod/_sfx/AppDispatchProvider.java b/qadevOOo/tests/java/mod/_sfx/AppDispatchProvider.java
index 8a56c10..84664a9 100644
--- a/qadevOOo/tests/java/mod/_sfx/AppDispatchProvider.java
+++ b/qadevOOo/tests/java/mod/_sfx/AppDispatchProvider.java
@@ -88,6 +88,8 @@ public class AppDispatchProvider extends TestCase {
         // adding relation for :XDispatchProvider
         tEnv.addObjRelation("XDispatchProvider.URL", ".uno:BibliographyComponent") ;
 
+        tEnv.addObjRelation("XInitialization.args", new Object[] { null });
+
         return tEnv;
     } // finish method getTestEnvironment
 
diff --git a/sfx2/source/appl/appdispatchprovider.cxx b/sfx2/source/appl/appdispatchprovider.cxx
index da2a6fd..e2615e4 100644
--- a/sfx2/source/appl/appdispatchprovider.cxx
+++ b/sfx2/source/appl/appdispatchprovider.cxx
@@ -23,6 +23,8 @@
 #include <com/sun/star/frame/XDispatch.hpp>
 #include <com/sun/star/frame/XFrame.hpp>
 #include <com/sun/star/frame/DispatchDescriptor.hpp>
+#include <com/sun/star/lang/IllegalArgumentException.hpp>
+#include <com/sun/star/lang/XInitialization.hpp>
 #include <com/sun/star/lang/XServiceInfo.hpp>
 #include <com/sun/star/uno/Exception.hpp>
 #include <com/sun/star/util/URL.hpp>
@@ -30,7 +32,7 @@
 #include <basic/basmgr.hxx>
 #include <basic/sbuno.hxx>
 #include <comphelper/sequence.hxx>
-#include <cppuhelper/implbase2.hxx>
+#include <cppuhelper/implbase3.hxx>
 #include <cppuhelper/supportsservice.hxx>
 #include <rtl/ref.hxx>
 #include <sfx2/app.hxx>
@@ -57,12 +59,16 @@ using namespace ::com::sun::star::uno;
 
 namespace {
 
-class SfxAppDispatchProvider : public ::cppu::WeakImplHelper2< css::frame::XAppDispatchProvider,
-                                                               css::lang::XServiceInfo>
+class SfxAppDispatchProvider : public ::cppu::WeakImplHelper3< css::frame::XAppDispatchProvider,
+                                                               css::lang::XServiceInfo,
+                                                               css::lang::XInitialization >
 {
     css::uno::WeakReference < css::frame::XFrame > m_xFrame;
 public:
-    SfxAppDispatchProvider(const css::uno::Sequence< css::uno::Any >&aArguments)
+    SfxAppDispatchProvider() {}
+
+    virtual void SAL_CALL initialize(
+        css::uno::Sequence<css::uno::Any> const & aArguments)
         throw (css::uno::Exception, css::uno::RuntimeException);
 
     virtual OUString SAL_CALL getImplementationName()
@@ -90,15 +96,17 @@ public:
         throw (css::uno::RuntimeException);
 };
 
-SfxAppDispatchProvider::SfxAppDispatchProvider(const css::uno::Sequence< css::uno::Any >& aArguments)
-    throw (uno::Exception, uno::RuntimeException)
+void SfxAppDispatchProvider::initialize(
+    css::uno::Sequence<css::uno::Any> const & aArguments)
+    throw (css::uno::Exception, css::uno::RuntimeException)
 {
-    Reference < XFrame > xFrame;
-    if ( aArguments.getLength() )
-    {
-        aArguments[0] >>= xFrame;
-        m_xFrame = xFrame;
+    css::uno::Reference<css::frame::XFrame> f;
+    if (aArguments.getLength() != 1 || !(aArguments[0] >>= f)) {
+        throw css::lang::IllegalArgumentException(
+            "SfxAppDispatchProvider::initialize expects one XFrame argument",
+            static_cast<OWeakObject *>(this), 0);
     }
+    m_xFrame = f;
 }
 
 OUString SAL_CALL SfxAppDispatchProvider::getImplementationName() throw( css::uno::RuntimeException )
@@ -253,9 +261,9 @@ throw (uno::RuntimeException)
 extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
 com_sun_star_comp_sfx2_AppDispatchProvider_get_implementation(
     css::uno::XComponentContext *,
-    css::uno::Sequence<css::uno::Any> const &arguments)
+    css::uno::Sequence<css::uno::Any> const &)
 {
-    return cppu::acquire(new SfxAppDispatchProvider(arguments));
+    return cppu::acquire(new SfxAppDispatchProvider);
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list