[Libreoffice-commits] core.git: basctl/source compilerplugins/clang include/sfx2 sfx2/source
Mike Kaganski
mike.kaganski at collabora.com
Mon Nov 14 08:57:12 UTC 2016
basctl/source/basicide/basobj2.cxx | 11 +++++++----
basctl/source/basicide/macrodlg.cxx | 10 ++++++++--
basctl/source/basicide/macrodlg.hxx | 9 +++++++--
basctl/source/inc/basobj.hxx | 6 +++++-
compilerplugins/clang/unusedmethods.py | 2 +-
include/sfx2/request.hxx | 1 +
sfx2/source/appl/appserv.cxx | 16 +++++++++++-----
sfx2/source/control/request.cxx | 12 ++++++++++++
8 files changed, 52 insertions(+), 15 deletions(-)
New commits:
commit 450762b224d62ded0c55144fee0796085dd4def3
Author: Mike Kaganski <mike.kaganski at collabora.com>
Date: Sun Nov 6 01:19:01 2016 +0300
tdf#68118: Pass current document frame to SvxScriptSelectorDialog
... through MacroChooser
Without this, current document's macros library is unavailable in
"Assign" dialog
Change-Id: I83baa3b98858260eab61e8f4fefde3f9979c6d83
Reviewed-on: https://gerrit.libreoffice.org/30600
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/basctl/source/basicide/basobj2.cxx b/basctl/source/basicide/basobj2.cxx
index b88a89f..0d8b7d2 100644
--- a/basctl/source/basicide/basobj2.cxx
+++ b/basctl/source/basicide/basobj2.cxx
@@ -42,11 +42,12 @@ using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::container;
extern "C" {
- SAL_DLLPUBLIC_EXPORT rtl_uString* basicide_choose_macro( void* pOnlyInDocument_AsXModel, sal_Bool bChooseOnly, rtl_uString* pMacroDesc )
+ SAL_DLLPUBLIC_EXPORT rtl_uString* basicide_choose_macro( void* pOnlyInDocument_AsXModel, void* pDocFrame_AsXFrame, sal_Bool bChooseOnly, rtl_uString* pMacroDesc )
{
OUString aMacroDesc( pMacroDesc );
Reference< frame::XModel > aDocument( static_cast< frame::XModel* >( pOnlyInDocument_AsXModel ) );
- OUString aScriptURL = basctl::ChooseMacro( aDocument, bChooseOnly, aMacroDesc );
+ Reference< frame::XFrame > aDocFrame( static_cast< frame::XFrame* >( pDocFrame_AsXFrame ) );
+ OUString aScriptURL = basctl::ChooseMacro( aDocument, aDocFrame, bChooseOnly, aMacroDesc );
rtl_uString* pScriptURL = aScriptURL.pData;
rtl_uString_acquire( pScriptURL );
@@ -231,7 +232,9 @@ namespace
}
}
-OUString ChooseMacro( const uno::Reference< frame::XModel >& rxLimitToDocument, bool bChooseOnly, const OUString& rMacroDesc )
+OUString ChooseMacro( const uno::Reference< frame::XModel >& rxLimitToDocument,
+ const uno::Reference< frame::XFrame >& xDocFrame,
+ bool bChooseOnly, const OUString& rMacroDesc )
{
(void)rMacroDesc;
@@ -242,7 +245,7 @@ OUString ChooseMacro( const uno::Reference< frame::XModel >& rxLimitToDocument,
OUString aScriptURL;
SbMethod* pMethod = nullptr;
- ScopedVclPtrInstance< MacroChooser > pChooser( nullptr, true );
+ ScopedVclPtrInstance< MacroChooser > pChooser( nullptr, xDocFrame, true );
if ( bChooseOnly || !SvtModuleOptions::IsBasicIDE() )
pChooser->SetMode(MacroChooser::ChooseOnly);
diff --git a/basctl/source/basicide/macrodlg.cxx b/basctl/source/basicide/macrodlg.cxx
index dcbccac..84273ae 100644
--- a/basctl/source/basicide/macrodlg.cxx
+++ b/basctl/source/basicide/macrodlg.cxx
@@ -46,8 +46,9 @@ using ::std::map;
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
-MacroChooser::MacroChooser( vcl::Window* pParnt, bool bCreateEntries )
+MacroChooser::MacroChooser( vcl::Window* pParnt, const Reference< frame::XFrame >& xDocFrame, bool bCreateEntries )
: SfxModalDialog(pParnt, "BasicMacroDialog", "modules/BasicIDE/ui/basicmacrodialog.ui")
+ , m_xDocumentFrame(xDocFrame)
, bNewDelIsDel(true)
// the Sfx doesn't ask the BasicManager whether modified or not
// => start saving in case of a change without a into the BasicIDE.
@@ -735,7 +736,12 @@ IMPL_LINK( MacroChooser, ButtonHdl, Button *, pButton, void )
OUString aComment( GetInfo( pMethod ) );
SfxMacroInfoItem aItem( SID_MACROINFO, pBasMgr, aLib, aMod, aSub, aComment );
SfxAllItemSet Args( SfxGetpApp()->GetPool() );
- SfxRequest aRequest( SID_CONFIG, SfxCallMode::SYNCHRON, Args );
+
+ SfxAllItemSet aInternalSet(SfxGetpApp()->GetPool());
+ if (m_xDocumentFrame.is())
+ aInternalSet.Put(SfxUnoFrameItem(SID_FILLFRAME, m_xDocumentFrame));
+
+ SfxRequest aRequest(SID_CONFIG, SfxCallMode::SYNCHRON, Args, aInternalSet);
aRequest.AppendItem( aItem );
SfxGetpApp()->ExecuteSlot( aRequest );
}
diff --git a/basctl/source/basicide/macrodlg.hxx b/basctl/source/basicide/macrodlg.hxx
index 052aa52..ea767af 100644
--- a/basctl/source/basicide/macrodlg.hxx
+++ b/basctl/source/basicide/macrodlg.hxx
@@ -23,6 +23,8 @@
#include <bastype2.hxx>
#include <sfx2/basedlgs.hxx>
+#include "com/sun/star/frame/XFrame.hpp"
+
#include <vcl/button.hxx>
namespace basctl
@@ -50,7 +52,7 @@ private:
VclPtr<FixedText> m_pMacrosSaveInTxt;
VclPtr<TreeListBox> m_pBasicBox;
VclPtr<FixedText> m_pMacrosInTxt;
- OUString m_aMacrosInTxtBaseStr;
+ OUString m_aMacrosInTxtBaseStr;
VclPtr<SvTreeListBox> m_pMacroBox;
VclPtr<PushButton> m_pRunButton;
@@ -62,6 +64,9 @@ private:
VclPtr<PushButton> m_pNewLibButton;
VclPtr<PushButton> m_pNewModButton;
+ // For forwarding to Assign dialog
+ ::css::uno::Reference< ::css::frame::XFrame > m_xDocumentFrame;
+
bool bNewDelIsDel;
bool bForceStoreBasic;
@@ -85,7 +90,7 @@ private:
void RestoreMacroDescription();
public:
- MacroChooser( vcl::Window* pParent, bool bCreateEntries = true );
+ MacroChooser( vcl::Window* pParent, const ::css::uno::Reference< ::css::frame::XFrame >& xDocFrame, bool bCreateEntries = true );
virtual ~MacroChooser() override;
virtual void dispose() override;
diff --git a/basctl/source/inc/basobj.hxx b/basctl/source/inc/basobj.hxx
index 295cd96..1dd039d 100644
--- a/basctl/source/inc/basobj.hxx
+++ b/basctl/source/inc/basobj.hxx
@@ -74,8 +74,12 @@ namespace basctl
// new methods for macros
OUString ChooseMacro(
- const css::uno::Reference< css::frame::XModel >& rxLimitToDocument,
+ const css::uno::Reference< css::frame::XModel >& rxLimitToDocument, const css::uno::Reference< css::frame::XFrame >& xDocFrame,
bool bChooseOnly, const OUString& rMacroDesc );
+ inline OUString ChooseMacro(
+ const css::uno::Reference< css::frame::XModel >& rxLimitToDocument,
+ bool bChooseOnly, const OUString& rMacroDesc )
+ { return ChooseMacro(rxLimitToDocument, css::uno::Reference< css::frame::XFrame >(), bChooseOnly, rMacroDesc); }
css::uno::Sequence< OUString > GetMethodNames(
const ScriptDocument& rDocument, const OUString& rLibName, const OUString& rModName )
diff --git a/compilerplugins/clang/unusedmethods.py b/compilerplugins/clang/unusedmethods.py
index 1e2a674..1f6c2bc 100755
--- a/compilerplugins/clang/unusedmethods.py
+++ b/compilerplugins/clang/unusedmethods.py
@@ -68,7 +68,7 @@ unusedMethodsExclusionSet = set([
# loaded by dlopen()
"void * getStandardAccessibleFactory()",
"void * getSvtAccessibilityComponentFactory()",
- "struct _rtl_uString * basicide_choose_macro(void *,unsigned char,struct _rtl_uString *)",
+ "struct _rtl_uString * basicide_choose_macro(void *,void *,unsigned char,struct _rtl_uString *)",
"void basicide_macro_organizer(short)",
"long basicide_handle_basic_error(void *)",
"class com::sun::star::uno::XInterface * org_libreoffice_chart2_Chart2ToolboxController(class com::sun::star::uno::XComponentContext *,const class com::sun::star::uno::Sequence<class com::sun::star::uno::Any> &)",
diff --git a/include/sfx2/request.hxx b/include/sfx2/request.hxx
index 1ebc08b..a30d3ab 100644
--- a/include/sfx2/request.hxx
+++ b/include/sfx2/request.hxx
@@ -62,6 +62,7 @@ public:
SfxRequest( const SfxSlot* pSlot, const css::uno::Sequence < css::beans::PropertyValue >& rArgs,
SfxCallMode nCallMode, SfxItemPool &rPool );
SfxRequest( sal_uInt16 nSlot, SfxCallMode nCallMode, const SfxAllItemSet& rSfxArgs );
+ SfxRequest( sal_uInt16 nSlot, SfxCallMode nCallMode, const SfxAllItemSet& rSfxArgs, const SfxAllItemSet& rSfxInternalArgs );
SfxRequest( const SfxRequest& rOrig );
virtual ~SfxRequest() override;
diff --git a/sfx2/source/appl/appserv.cxx b/sfx2/source/appl/appserv.cxx
index 7345027..e804007 100644
--- a/sfx2/source/appl/appserv.cxx
+++ b/sfx2/source/appl/appserv.cxx
@@ -1190,17 +1190,17 @@ void SfxApplication::MiscState_Impl(SfxItemSet &rSet)
#ifndef DISABLE_DYNLOADING
-typedef rtl_uString* (SAL_CALL *basicide_choose_macro)(void*, sal_Bool, rtl_uString*);
+typedef rtl_uString* (SAL_CALL *basicide_choose_macro)(void*, void*, sal_Bool, rtl_uString*);
extern "C" { static void SAL_CALL thisModule() {} }
#else
-extern "C" rtl_uString* basicide_choose_macro(void*, sal_Bool, rtl_uString*);
+extern "C" rtl_uString* basicide_choose_macro(void*, void*, sal_Bool, rtl_uString*);
#endif
-OUString ChooseMacro( const Reference< XModel >& rxLimitToDocument, bool bChooseOnly )
+OUString ChooseMacro( const Reference< XModel >& rxLimitToDocument, const Reference< XFrame >& xDocFrame, bool bChooseOnly )
{
#ifndef DISABLE_DYNLOADING
osl::Module aMod;
@@ -1220,7 +1220,7 @@ OUString ChooseMacro( const Reference< XModel >& rxLimitToDocument, bool bChoose
// call basicide_choose_macro in basctl
OUString rMacroDesc;
- rtl_uString* pScriptURL = pSymbol( rxLimitToDocument.get(), bChooseOnly, rMacroDesc.pData );
+ rtl_uString* pScriptURL = pSymbol( rxLimitToDocument.get(), xDocFrame.get(), bChooseOnly, rMacroDesc.pData );
OUString aScriptURL( pScriptURL );
rtl_uString_release( pScriptURL );
return aScriptURL;
@@ -1469,7 +1469,13 @@ void SfxApplication::OfaExec_Impl( SfxRequest& rReq )
}
}
- rReq.SetReturnValue( SfxStringItem( rReq.GetSlot(), ChooseMacro( xLimitToModel, bChooseOnly ) ) );
+ Reference< XFrame > xFrame;
+ const SfxItemSet* pIntSet = rReq.GetInternalArgs_Impl();
+ const SfxUnoFrameItem* pFrameItem = SfxItemSet::GetItem<SfxUnoFrameItem>(pIntSet, SID_FILLFRAME, false);
+ if (pFrameItem)
+ xFrame = pFrameItem->GetFrame();
+
+ rReq.SetReturnValue(SfxStringItem(rReq.GetSlot(), ChooseMacro(xLimitToModel, xFrame, bChooseOnly)));
rReq.Done();
}
break;
diff --git a/sfx2/source/control/request.cxx b/sfx2/source/control/request.cxx
index 2cadc79..2c8f1ea 100644
--- a/sfx2/source/control/request.cxx
+++ b/sfx2/source/control/request.cxx
@@ -267,6 +267,18 @@ SfxRequest::SfxRequest
}
+SfxRequest::SfxRequest
+(
+ sal_uInt16 nSlotId,
+ SfxCallMode nMode,
+ const SfxAllItemSet& rSfxArgs,
+ const SfxAllItemSet& rSfxInternalArgs
+)
+: SfxRequest(nSlotId, nMode, rSfxArgs)
+{
+ SetInternalArgs_Impl(rSfxInternalArgs);
+}
+
SfxCallMode SfxRequest::GetCallMode() const
{
return pImpl->nCallMode;
More information about the Libreoffice-commits
mailing list