Resolves: #i113481# query script invocation from the current frame...
when the controller is not yet attached (cherry picked from commit 03a410876fbdb5f9e1a7216d9d622557275d4896) Change-Id: I1da3b3da258445d5187dcc75c4d151d08f9017dc
This commit is contained in:
committed by
Caolán McNamara
parent
fc974a4028
commit
a00c4c5e2f
@@ -158,7 +158,28 @@ void SAL_CALL ScriptProtocolHandler::dispatchWithNotification(
|
|||||||
|
|
||||||
OSL_ENSURE( xDocumentScripts.is(), "ScriptProtocolHandler::dispatchWithNotification: can't do the security check!" );
|
OSL_ENSURE( xDocumentScripts.is(), "ScriptProtocolHandler::dispatchWithNotification: can't do the security check!" );
|
||||||
if ( !xDocumentScripts.is() || !xDocumentScripts->getAllowMacroExecution() )
|
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;
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Creates a ScriptProvider ( if one is not created already )
|
// Creates a ScriptProvider ( if one is not created already )
|
||||||
@@ -333,6 +354,25 @@ ScriptProtocolHandler::getScriptInvocation()
|
|||||||
if ( !m_xScriptInvocation.set( xController->getModel(), UNO_QUERY ) )
|
if ( !m_xScriptInvocation.set( xController->getModel(), UNO_QUERY ) )
|
||||||
m_xScriptInvocation.set( xController, 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();
|
return m_xScriptInvocation.is();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user