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

Tsutomu Uchino hanya at apache.org
Sun May 18 00:53:42 PDT 2014


 scripting/source/protocolhandler/scripthandler.cxx |   40 +++++++++++++++++++++
 1 file changed, 40 insertions(+)

New commits:
commit a00c4c5e2fb9461fef1fbce4d51c8cdf36141b9f
Author: Tsutomu Uchino <hanya at apache.org>
Date:   Sat May 17 10:16:40 2014 +0000

    Resolves: #i113481# query script invocation from the current frame...
    
    when the controller is not yet attached
    
    (cherry picked from commit 03a410876fbdb5f9e1a7216d9d622557275d4896)
    
    Change-Id: I1da3b3da258445d5187dcc75c4d151d08f9017dc

diff --git a/scripting/source/protocolhandler/scripthandler.cxx b/scripting/source/protocolhandler/scripthandler.cxx
index 50fa627..d2c6f75 100644
--- a/scripting/source/protocolhandler/scripthandler.cxx
+++ b/scripting/source/protocolhandler/scripthandler.cxx
@@ -158,7 +158,28 @@ void SAL_CALL ScriptProtocolHandler::dispatchWithNotification(
 
                 OSL_ENSURE( xDocumentScripts.is(), "ScriptProtocolHandler::dispatchWithNotification: can't do the security check!" );
                 if ( !xDocumentScripts.is() || !xDocumentScripts->getAllowMacroExecution() )
+                {
+                    if ( xListener.is() )
+                    {
+                        ::com::sun::star::frame::DispatchResultEvent aEvent(
+                                static_cast< ::cppu::OWeakObject* >( this ),
+                                ::com::sun::star::frame::DispatchResultState::FAILURE,
+                                invokeResult );
+                        try
+                        {
+                            xListener->dispatchFinished( aEvent ) ;
+                        }
+                        catch(RuntimeException & e)
+                        {
+                            OSL_TRACE(
+                                "ScriptProtocolHandler::dispatchWithNotification: caught RuntimeException"
+                                "while dispatchFinished with failture of the execution %s",
+                                ::rtl::OUStringToOString( e.Message,
+                                RTL_TEXTENCODING_ASCII_US ).pData->buffer );
+                        }
+                    }
                     return;
+                }
             }
 
             // Creates a ScriptProvider ( if one is not created already )
@@ -333,6 +354,25 @@ ScriptProtocolHandler::getScriptInvocation()
             if ( !m_xScriptInvocation.set( xController->getModel(), UNO_QUERY ) )
                 m_xScriptInvocation.set( xController, UNO_QUERY );
         }
+        else
+        {
+            Reference< XFrame > xFrame( m_xFrame.get(), UNO_QUERY );
+            if ( xFrame.is() )
+            {
+                SfxFrame* pFrame = NULL;
+                for ( pFrame = SfxFrame::GetFirst(); pFrame; pFrame = SfxFrame::GetNext( *pFrame ) )
+                {
+                    if ( pFrame->GetFrameInterface() == xFrame )
+                        break;
+                }
+                SfxObjectShell* pDocShell = pFrame ? pFrame->GetCurrentDocument() : SfxObjectShell::Current();
+                if ( pDocShell )
+                {
+                    Reference< XModel > xModel( pDocShell->GetModel() );
+                    m_xScriptInvocation.set( xModel, UNO_QUERY );
+                }
+            }
+        }
     }
     return m_xScriptInvocation.is();
 }


More information about the Libreoffice-commits mailing list