Kaydet (Commit) 5da50768 authored tarafından Maxim Monastirsky's avatar Maxim Monastirsky

Unify menu-based toolbar controllers

The new GenericPopupToolbarController takes by default
the popup menu controller that registered for the same
.uno:Something command, and sets ToolBoxItemBits to
ToolBoxItemBits::DROPDOWNONLY. If a different command
specified using the "Value" property - takes the popup
menu controller that registered for this command, and
sets bits to ToolBoxItemBits::DROPDOWN.

Change-Id: I75c5300bd27fcc9f618f2ee0df2aa6aefd088239
Reviewed-on: https://gerrit.libreoffice.org/20040Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarMaxim Monastirsky <momonasmon@gmail.com>
üst 99648095
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <cppuhelper/implbase.hxx> #include <cppuhelper/implbase.hxx>
#include <cppuhelper/supportsservice.hxx> #include <cppuhelper/supportsservice.hxx>
#include <comphelper/processfactory.hxx> #include <comphelper/processfactory.hxx>
#include <comphelper/propertyvalue.hxx>
#include <framework/menuconfiguration.hxx> #include <framework/menuconfiguration.hxx>
#include <rtl/ref.hxx> #include <rtl/ref.hxx>
#include <svtools/imagemgr.hxx> #include <svtools/imagemgr.hxx>
...@@ -42,8 +43,6 @@ ...@@ -42,8 +43,6 @@
#include <com/sun/star/ucb/CommandFailedException.hpp> #include <com/sun/star/ucb/CommandFailedException.hpp>
#include <com/sun/star/ucb/ContentCreationException.hpp> #include <com/sun/star/ucb/ContentCreationException.hpp>
#define UNO_COMMAND_RECENT_FILE_LIST ".uno:RecentFileList"
using namespace framework; using namespace framework;
namespace { namespace {
...@@ -74,11 +73,11 @@ protected: ...@@ -74,11 +73,11 @@ protected:
void createPopupMenuController(); void createPopupMenuController();
css::uno::Reference< css::uno::XComponentContext > m_xContext; css::uno::Reference< css::uno::XComponentContext > m_xContext;
bool m_bHasController; bool m_bHasController;
OUString m_aPopupCommand;
css::uno::Reference< css::awt::XPopupMenu > m_xPopupMenu; css::uno::Reference< css::awt::XPopupMenu > m_xPopupMenu;
private: private:
OUString m_aPopupCommand;
css::uno::Reference< css::frame::XUIControllerFactory > m_xPopupMenuFactory; css::uno::Reference< css::frame::XUIControllerFactory > m_xPopupMenuFactory;
css::uno::Reference< css::frame::XPopupMenuController > m_xPopupMenuController; css::uno::Reference< css::frame::XPopupMenuController > m_xPopupMenuController;
}; };
...@@ -217,16 +216,11 @@ void PopupMenuToolbarController::createPopupMenuController() ...@@ -217,16 +216,11 @@ void PopupMenuToolbarController::createPopupMenuController()
if ( !m_xPopupMenuController.is() ) if ( !m_xPopupMenuController.is() )
{ {
css::uno::Sequence< css::uno::Any > aArgs( 2 ); css::uno::Sequence< css::uno::Any > aArgs( 3 );
css::beans::PropertyValue aProp; aArgs[0] <<= comphelper::makePropertyValue( "Frame", m_xFrame );
aArgs[1] <<= comphelper::makePropertyValue( "ModuleIdentifier", getModuleName() );
aProp.Name = "Frame"; aArgs[2] <<= comphelper::makePropertyValue( "InToolbar", true );
aProp.Value <<= m_xFrame;
aArgs[0] <<= aProp;
aProp.Name = "ModuleIdentifier";
aProp.Value <<= getModuleName();
aArgs[1] <<= aProp;
try try
{ {
m_xPopupMenu.set( m_xPopupMenu.set(
...@@ -247,10 +241,11 @@ void PopupMenuToolbarController::createPopupMenuController() ...@@ -247,10 +241,11 @@ void PopupMenuToolbarController::createPopupMenuController()
} }
} }
class WizardsToolbarController : public PopupMenuToolbarController class GenericPopupToolbarController : public PopupMenuToolbarController
{ {
public: public:
WizardsToolbarController( const css::uno::Reference< css::uno::XComponentContext >& rxContext ); GenericPopupToolbarController( const css::uno::Reference< css::uno::XComponentContext >& rxContext,
const css::uno::Sequence< css::uno::Any >& rxArgs );
// XServiceInfo // XServiceInfo
virtual OUString SAL_CALL getImplementationName() throw (css::uno::RuntimeException) override; virtual OUString SAL_CALL getImplementationName() throw (css::uno::RuntimeException) override;
...@@ -260,75 +255,51 @@ public: ...@@ -260,75 +255,51 @@ public:
virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() throw (css::uno::RuntimeException) override; virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() throw (css::uno::RuntimeException) override;
private: private:
bool m_bSplitButton;
ToolBoxItemBits getDropDownStyle() const override; ToolBoxItemBits getDropDownStyle() const override;
}; };
WizardsToolbarController::WizardsToolbarController( GenericPopupToolbarController::GenericPopupToolbarController(
const css::uno::Reference< css::uno::XComponentContext >& xContext ) const css::uno::Reference< css::uno::XComponentContext >& xContext,
const css::uno::Sequence< css::uno::Any >& rxArgs )
: PopupMenuToolbarController( xContext ) : PopupMenuToolbarController( xContext )
, m_bSplitButton( false )
{ {
css::beans::PropertyValue aPropValue;
for ( const auto& arg: rxArgs )
{
if ( ( arg >>= aPropValue ) && aPropValue.Name == "Value" )
{
aPropValue.Value >>= m_aPopupCommand;
break;
}
}
if ( !m_aPopupCommand.isEmpty() )
m_bSplitButton = true;
} }
OUString WizardsToolbarController::getImplementationName() OUString GenericPopupToolbarController::getImplementationName()
throw (css::uno::RuntimeException) throw (css::uno::RuntimeException)
{ {
return OUString("org.apache.openoffice.comp.framework.WizardsToolbarController"); return OUString("com.sun.star.comp.framework.GenericPopupToolbarController");
} }
sal_Bool WizardsToolbarController::supportsService(OUString const & rServiceName) sal_Bool GenericPopupToolbarController::supportsService(OUString const & rServiceName)
throw (css::uno::RuntimeException) throw (css::uno::RuntimeException)
{ {
return cppu::supportsService( this, rServiceName ); return cppu::supportsService( this, rServiceName );
} }
css::uno::Sequence<OUString> WizardsToolbarController::getSupportedServiceNames() css::uno::Sequence<OUString> GenericPopupToolbarController::getSupportedServiceNames()
throw (css::uno::RuntimeException) throw (css::uno::RuntimeException)
{ {
css::uno::Sequence<OUString> aRet { "com.sun.star.frame.ToolbarController" }; css::uno::Sequence<OUString> aRet { "com.sun.star.frame.ToolbarController" };
return aRet; return aRet;
} }
ToolBoxItemBits WizardsToolbarController::getDropDownStyle() const ToolBoxItemBits GenericPopupToolbarController::getDropDownStyle() const
{
return ToolBoxItemBits::DROPDOWNONLY;
}
class OpenToolbarController : public PopupMenuToolbarController
{
public:
OpenToolbarController( const css::uno::Reference< css::uno::XComponentContext >& rxContext );
// XServiceInfo
virtual OUString SAL_CALL getImplementationName() throw (css::uno::RuntimeException) override;
virtual sal_Bool SAL_CALL supportsService(OUString const & rServiceName) throw (css::uno::RuntimeException) override;
virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() throw (css::uno::RuntimeException) override;
};
OpenToolbarController::OpenToolbarController(
const css::uno::Reference< css::uno::XComponentContext >& xContext )
: PopupMenuToolbarController( xContext, UNO_COMMAND_RECENT_FILE_LIST )
{ {
} return m_bSplitButton ? ToolBoxItemBits::DROPDOWN : ToolBoxItemBits::DROPDOWNONLY;
OUString OpenToolbarController::getImplementationName()
throw (css::uno::RuntimeException)
{
return OUString("org.apache.openoffice.comp.framework.OpenToolbarController");
}
sal_Bool OpenToolbarController::supportsService(OUString const & rServiceName)
throw (css::uno::RuntimeException)
{
return cppu::supportsService( this, rServiceName );
}
css::uno::Sequence<OUString> OpenToolbarController::getSupportedServiceNames()
throw (css::uno::RuntimeException)
{
css::uno::Sequence<OUString> aRet { "com.sun.star.frame.ToolbarController" };
return aRet;
} }
class NewToolbarController : public PopupMenuToolbarController class NewToolbarController : public PopupMenuToolbarController
...@@ -575,19 +546,11 @@ void NewToolbarController::setItemImage( const OUString &rCommand ) ...@@ -575,19 +546,11 @@ void NewToolbarController::setItemImage( const OUString &rCommand )
} }
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
org_apache_openoffice_comp_framework_WizardsToolbarController_get_implementation( com_sun_star_comp_framework_GenericPopupToolbarController_get_implementation(
css::uno::XComponentContext *context, css::uno::XComponentContext *context,
css::uno::Sequence<css::uno::Any> const &) css::uno::Sequence<css::uno::Any> const &args)
{
return cppu::acquire(new WizardsToolbarController(context));
}
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
org_apache_openoffice_comp_framework_OpenToolbarController_get_implementation(
css::uno::XComponentContext *context,
css::uno::Sequence<css::uno::Any> const &)
{ {
return cppu::acquire(new OpenToolbarController(context)); return cppu::acquire(new GenericPopupToolbarController(context, args));
} }
extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface * SAL_CALL
......
...@@ -127,7 +127,7 @@ RecentFilesMenuController::RecentFilesMenuController( const uno::Reference< uno: ...@@ -127,7 +127,7 @@ RecentFilesMenuController::RecentFilesMenuController( const uno::Reference< uno:
for ( sal_Int32 i = 0; i < args.getLength(); ++i ) for ( sal_Int32 i = 0; i < args.getLength(); ++i )
{ {
args[i] >>= aPropValue; args[i] >>= aPropValue;
if ( aPropValue.Name == "ShowRemote" ) if ( aPropValue.Name == "InToolbar" )
{ {
aPropValue.Value >>= m_bShowRemote; aPropValue.Value >>= m_bShowRemote;
break; break;
......
...@@ -188,18 +188,14 @@ ...@@ -188,18 +188,14 @@
constructor="com_sun_star_comp_framework_TabWindowService_get_implementation"> constructor="com_sun_star_comp_framework_TabWindowService_get_implementation">
<service name="com.sun.star.ui.dialogs.TabContainerWindow"/> <service name="com.sun.star.ui.dialogs.TabContainerWindow"/>
</implementation> </implementation>
<implementation name="org.apache.openoffice.comp.framework.OpenToolbarController" <implementation name="com.sun.star.comp.framework.GenericPopupToolbarController"
constructor="org_apache_openoffice_comp_framework_OpenToolbarController_get_implementation"> constructor="com_sun_star_comp_framework_GenericPopupToolbarController_get_implementation">
<service name="com.sun.star.frame.ToolbarController"/> <service name="com.sun.star.frame.ToolbarController"/>
</implementation> </implementation>
<implementation name="org.apache.openoffice.comp.framework.NewToolbarController" <implementation name="org.apache.openoffice.comp.framework.NewToolbarController"
constructor="org_apache_openoffice_comp_framework_NewToolbarController_get_implementation"> constructor="org_apache_openoffice_comp_framework_NewToolbarController_get_implementation">
<service name="com.sun.star.frame.ToolbarController"/> <service name="com.sun.star.frame.ToolbarController"/>
</implementation> </implementation>
<implementation name="org.apache.openoffice.comp.framework.WizardsToolbarController"
constructor="org_apache_openoffice_comp_framework_WizardsToolbarController_get_implementation">
<service name="com.sun.star.frame.ToolbarController"/>
</implementation>
<implementation name="com.sun.star.comp.framework.SubToolBarController" <implementation name="com.sun.star.comp.framework.SubToolBarController"
constructor="com_sun_star_comp_framework_SubToolBarController_get_implementation"> constructor="com_sun_star_comp_framework_SubToolBarController_get_implementation">
<service name="com.sun.star.frame.ToolbarController"/> <service name="com.sun.star.frame.ToolbarController"/>
......
...@@ -263,43 +263,6 @@ public: ...@@ -263,43 +263,6 @@ public:
}; };
/** Toolbox that implements recent files menu for the Open file toolbar button.
To use that, the appropriate Sfx*Item (like Open, OpenFromCalc, or
OpenFromWriter) has to have SlotType = SfxStringItem, and the appropriate
module initialization has to call RegisterControl().
*/
class SfxRecentFilesToolBoxControl : public SfxToolBoxControl
{
public:
// We don't use SFX_DECL_TOOLBOX_CONTROL() here as we need to have this
// RegisterControl() marked as SFX2_DLLPUBLIC
static SfxToolBoxControl* CreateImpl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox &rTbx );
static void SFX2_DLLPUBLIC RegisterControl(sal_uInt16 nSlotId = 0, SfxModule *pMod=nullptr);
SfxRecentFilesToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rBox );
virtual ~SfxRecentFilesToolBoxControl();
protected:
virtual VclPtr<SfxPopupWindow> CreatePopupWindow() override;
};
class SfxSaveAsToolBoxControl : public SfxToolBoxControl
{
public:
// We don't use SFX_DECL_TOOLBOX_CONTROL() here as we need to have this
// RegisterControl() marked as SFX2_DLLPUBLIC
static SfxToolBoxControl* CreateImpl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox &rTbx );
static void SFX2_DLLPUBLIC RegisterControl(sal_uInt16 nSlotId = 0, SfxModule *pMod=nullptr);
SfxSaveAsToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rBox );
virtual ~SfxSaveAsToolBoxControl();
protected:
virtual VclPtr<SfxPopupWindow> CreatePopupWindow() override;
};
class SfxReloadToolBoxControl_Impl : public SfxToolBoxControl class SfxReloadToolBoxControl_Impl : public SfxToolBoxControl
{ {
protected: protected:
......
...@@ -892,7 +892,7 @@ ...@@ -892,7 +892,7 @@
<value>com.sun.star.report.ReportToolboxController</value> <value>com.sun.star.report.ReportToolboxController</value>
</prop> </prop>
</node> </node>
<node oor:name="org.apache.openoffice.comp.framework.OpenToolbarController" oor:op="replace"> <node oor:name="OpenToolbarController" oor:op="replace">
<prop oor:name="Command"> <prop oor:name="Command">
<value>.uno:Open</value> <value>.uno:Open</value>
</prop> </prop>
...@@ -900,7 +900,52 @@ ...@@ -900,7 +900,52 @@
<value/> <value/>
</prop> </prop>
<prop oor:name="Controller"> <prop oor:name="Controller">
<value>org.apache.openoffice.comp.framework.OpenToolbarController</value> <value>com.sun.star.comp.framework.GenericPopupToolbarController</value>
</prop>
<prop oor:name="Value">
<value>.uno:RecentFileList</value>
</prop>
</node>
<node oor:name="WriterOpenToolbarController" oor:op="replace">
<prop oor:name="Command">
<value>.uno:OpenFromWriter</value>
</prop>
<prop oor:name="Module">
<value>com.sun.star.text.TextDocument</value>
</prop>
<prop oor:name="Controller">
<value>com.sun.star.comp.framework.GenericPopupToolbarController</value>
</prop>
<prop oor:name="Value">
<value>.uno:RecentFileList</value>
</prop>
</node>
<node oor:name="CalcOpenToolbarController" oor:op="replace">
<prop oor:name="Command">
<value>.uno:OpenFromCalc</value>
</prop>
<prop oor:name="Module">
<value>com.sun.star.sheet.SpreadsheetDocument</value>
</prop>
<prop oor:name="Controller">
<value>com.sun.star.comp.framework.GenericPopupToolbarController</value>
</prop>
<prop oor:name="Value">
<value>.uno:RecentFileList</value>
</prop>
</node>
<node oor:name="SaveToolbarController" oor:op="replace">
<prop oor:name="Command">
<value>.uno:Save</value>
</prop>
<prop oor:name="Module">
<value/>
</prop>
<prop oor:name="Controller">
<value>com.sun.star.comp.framework.GenericPopupToolbarController</value>
</prop>
<prop oor:name="Value">
<value>.uno:SaveAsMenu</value>
</prop> </prop>
</node> </node>
<node oor:name="org.apache.openoffice.comp.framework.NewToolbarController" oor:op="replace"> <node oor:name="org.apache.openoffice.comp.framework.NewToolbarController" oor:op="replace">
...@@ -914,7 +959,7 @@ ...@@ -914,7 +959,7 @@
<value>org.apache.openoffice.comp.framework.NewToolbarController</value> <value>org.apache.openoffice.comp.framework.NewToolbarController</value>
</prop> </prop>
</node> </node>
<node oor:name="org.apache.openoffice.comp.framework.WizardsToolbarController" oor:op="replace"> <node oor:name="WizardsToolbarController" oor:op="replace">
<prop oor:name="Command"> <prop oor:name="Command">
<value>.uno:AutoPilotMenu</value> <value>.uno:AutoPilotMenu</value>
</prop> </prop>
...@@ -922,7 +967,7 @@ ...@@ -922,7 +967,7 @@
<value/> <value/>
</prop> </prop>
<prop oor:name="Controller"> <prop oor:name="Controller">
<value>org.apache.openoffice.comp.framework.WizardsToolbarController</value> <value>com.sun.star.comp.framework.GenericPopupToolbarController</value>
</prop> </prop>
</node> </node>
</node> </node>
......
...@@ -148,9 +148,6 @@ void ScDLL::Init() ...@@ -148,9 +148,6 @@ void ScDLL::Init()
ScMediaShell ::RegisterInterface(pMod); ScMediaShell ::RegisterInterface(pMod);
ScPageBreakShell ::RegisterInterface(pMod); ScPageBreakShell ::RegisterInterface(pMod);
SfxRecentFilesToolBoxControl::RegisterControl(SID_OPEN_CALC, pMod);
SfxSaveAsToolBoxControl::RegisterControl(SID_SAVEDOC, pMod );
// Own Controller // Own Controller
ScZoomSliderControl ::RegisterControl(SID_PREVIEW_SCALINGFACTOR, pMod); ScZoomSliderControl ::RegisterControl(SID_PREVIEW_SCALINGFACTOR, pMod);
......
...@@ -244,8 +244,6 @@ void SdDLL::RegisterControllers() ...@@ -244,8 +244,6 @@ void SdDLL::RegisterControllers()
SvxFrameLineStyleToolBoxControl::RegisterControl(SID_FRAME_LINESTYLE, pMod ); SvxFrameLineStyleToolBoxControl::RegisterControl(SID_FRAME_LINESTYLE, pMod );
SvxColorToolBoxControl::RegisterControl(SID_FRAME_LINECOLOR, pMod ); SvxColorToolBoxControl::RegisterControl(SID_FRAME_LINECOLOR, pMod );
SvxFrameToolBoxControl::RegisterControl(SID_ATTR_BORDER, pMod ); SvxFrameToolBoxControl::RegisterControl(SID_ATTR_BORDER, pMod );
SfxSaveAsToolBoxControl::RegisterControl(SID_SAVEDOC, pMod );
} }
void SdDLL::Init() void SdDLL::Init()
......
...@@ -61,8 +61,7 @@ void SfxApplication::Registrations_Impl() ...@@ -61,8 +61,7 @@ void SfxApplication::Registrations_Impl()
// Controller // Controller
SfxToolBoxControl::RegisterControl(SID_REPEAT); SfxToolBoxControl::RegisterControl(SID_REPEAT);
SfxURLToolBoxControl_Impl::RegisterControl(SID_OPENURL); SfxURLToolBoxControl_Impl::RegisterControl(SID_OPENURL);
SfxRecentFilesToolBoxControl::RegisterControl( SID_OPENDOC ); }
};
......
...@@ -105,8 +105,6 @@ using namespace ::com::sun::star::ui; ...@@ -105,8 +105,6 @@ using namespace ::com::sun::star::ui;
SFX_IMPL_TOOLBOX_CONTROL_ARG(SfxToolBoxControl, SfxStringItem, true); SFX_IMPL_TOOLBOX_CONTROL_ARG(SfxToolBoxControl, SfxStringItem, true);
SFX_IMPL_TOOLBOX_CONTROL(SfxRecentFilesToolBoxControl, SfxStringItem);
SFX_IMPL_TOOLBOX_CONTROL(SfxSaveAsToolBoxControl, SfxStringItem);
static vcl::Window* GetTopMostParentSystemWindow( vcl::Window* pWindow ) static vcl::Window* GetTopMostParentSystemWindow( vcl::Window* pWindow )
{ {
...@@ -1132,108 +1130,4 @@ void SfxPopupWindow::Delete() ...@@ -1132,108 +1130,4 @@ void SfxPopupWindow::Delete()
disposeOnce(); disposeOnce();
} }
SfxRecentFilesToolBoxControl::SfxRecentFilesToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rBox )
: SfxToolBoxControl( nSlotId, nId, rBox )
{
rBox.SetItemBits( nId, rBox.GetItemBits( nId ) | ToolBoxItemBits::DROPDOWN);
}
SfxRecentFilesToolBoxControl::~SfxRecentFilesToolBoxControl()
{
}
VclPtr<SfxPopupWindow> SfxRecentFilesToolBoxControl::CreatePopupWindow()
{
ToolBox& rBox = GetToolBox();
sal_uInt16 nItemId = GetId();
::Rectangle aRect( rBox.GetItemRect( nItemId ) );
Sequence< Any > aArgs( 3 );
PropertyValue aPropValue;
aPropValue.Name = "CommandURL";
aPropValue.Value <<= OUString( ".uno:RecentFileList" );
aArgs[0] <<= aPropValue;
aPropValue.Name = "Frame";
aPropValue.Value <<= m_xFrame;
aArgs[1] <<= aPropValue;
aPropValue.Name = "ShowRemote";
aPropValue.Value <<= true;
aArgs[2] <<= aPropValue;
uno::Reference< frame::XPopupMenuController > xPopupController( m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext(
"com.sun.star.comp.framework.RecentFilesMenuController", aArgs, m_xContext ), UNO_QUERY );
uno::Reference< awt::XPopupMenu > xPopupMenu( m_xContext->getServiceManager()->createInstanceWithContext(
"com.sun.star.awt.PopupMenu", m_xContext ), uno::UNO_QUERY );
if ( xPopupController.is() && xPopupMenu.is() )
{
xPopupController->setPopupMenu( xPopupMenu );
rBox.SetItemDown( nItemId, true );
Reference< awt::XWindowPeer > xPeer( getParent(), uno::UNO_QUERY );
if ( xPeer.is() )
xPopupMenu->execute( xPeer, VCLUnoHelper::ConvertToAWTRect( aRect ), 0 );
rBox.SetItemDown( nItemId, false );
}
return nullptr;
}
SfxSaveAsToolBoxControl::SfxSaveAsToolBoxControl( sal_uInt16 nSlotId, sal_uInt16 nId, ToolBox& rBox )
: SfxToolBoxControl( nSlotId, nId, rBox )
{
rBox.SetItemBits( nId, rBox.GetItemBits( nId ) | ToolBoxItemBits::DROPDOWN);
}
SfxSaveAsToolBoxControl::~SfxSaveAsToolBoxControl()
{
}
VclPtr<SfxPopupWindow> SfxSaveAsToolBoxControl::CreatePopupWindow()
{
ToolBox& rBox = GetToolBox();
sal_uInt16 nItemId = GetId();
::Rectangle aRect( rBox.GetItemRect( nItemId ) );
Sequence< Any > aArgs( 2 );
PropertyValue aPropValue;
aPropValue.Name = "CommandURL";
aPropValue.Value <<= OUString( ".uno:SaveAsMenu" );
aArgs[0] <<= aPropValue;
aPropValue.Name = "Frame";
aPropValue.Value <<= m_xFrame;
aArgs[1] <<= aPropValue;
uno::Reference< frame::XPopupMenuController > xPopupController( m_xContext->getServiceManager()->createInstanceWithArgumentsAndContext(
"com.sun.star.comp.framework.SaveAsMenuController", aArgs, m_xContext ), UNO_QUERY );
uno::Reference< awt::XPopupMenu > xPopupMenu( m_xContext->getServiceManager()->createInstanceWithContext(
"com.sun.star.awt.PopupMenu", m_xContext ), uno::UNO_QUERY );
if ( xPopupController.is() && xPopupMenu.is() )
{
xPopupController->setPopupMenu( xPopupMenu );
rBox.SetItemDown( nItemId, true );
Reference< awt::XWindowPeer > xPeer( getParent(), uno::UNO_QUERY );
if ( xPeer.is() )
xPopupMenu->execute( xPeer, VCLUnoHelper::ConvertToAWTRect( aRect ), 0 );
rBox.SetItemDown( nItemId, false );
}
return nullptr;
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
...@@ -286,7 +286,6 @@ void SwDLL::RegisterControls() ...@@ -286,7 +286,6 @@ void SwDLL::RegisterControls()
{ {
SwModule* pMod = SW_MOD(); SwModule* pMod = SW_MOD();
SfxRecentFilesToolBoxControl::RegisterControl( FN_OPEN_FILE, pMod );
SvxTbxCtlDraw::RegisterControl(SID_INSERT_DRAW, pMod ); SvxTbxCtlDraw::RegisterControl(SID_INSERT_DRAW, pMod );
SwTbxAnchor::RegisterControl(FN_TOOL_ANCHOR, pMod ); SwTbxAnchor::RegisterControl(FN_TOOL_ANCHOR, pMod );
SwTbxFieldCtrl::RegisterControl(FN_INSERT_FIELD_CTRL, pMod ); SwTbxFieldCtrl::RegisterControl(FN_INSERT_FIELD_CTRL, pMod );
...@@ -295,7 +294,6 @@ void SwDLL::RegisterControls() ...@@ -295,7 +294,6 @@ void SwDLL::RegisterControls()
SvxColorToolBoxControl::RegisterControl( SID_EXTRUSION_3D_COLOR, pMod ); SvxColorToolBoxControl::RegisterControl( SID_EXTRUSION_3D_COLOR, pMod );
SfxSaveAsToolBoxControl::RegisterControl(SID_SAVEDOC, pMod );
SvxClipBoardControl::RegisterControl(SID_PASTE, pMod ); SvxClipBoardControl::RegisterControl(SID_PASTE, pMod );
SvxUndoRedoControl::RegisterControl(SID_UNDO, pMod ); SvxUndoRedoControl::RegisterControl(SID_UNDO, pMod );
SvxUndoRedoControl::RegisterControl(SID_REDO, pMod ); SvxUndoRedoControl::RegisterControl(SID_REDO, pMod );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment