summaryrefslogtreecommitdiff
path: root/framework/source/uielement/macrosmenucontroller.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'framework/source/uielement/macrosmenucontroller.cxx')
-rw-r--r--framework/source/uielement/macrosmenucontroller.cxx40
1 files changed, 16 insertions, 24 deletions
diff --git a/framework/source/uielement/macrosmenucontroller.cxx b/framework/source/uielement/macrosmenucontroller.cxx
index a4c5123f50c7..77f077204373 100644
--- a/framework/source/uielement/macrosmenucontroller.cxx
+++ b/framework/source/uielement/macrosmenucontroller.cxx
@@ -23,18 +23,15 @@
#include <com/sun/star/uno/XComponentContext.hpp>
#include <com/sun/star/style/XStyleFamiliesSupplier.hpp>
#include <officecfg/Office/Common.hxx>
-#include <toolkit/awt/vclxmenu.hxx>
#include <vcl/svapp.hxx>
#include <vcl/commandinfoprovider.hxx>
#include <osl/mutex.hxx>
+#include <toolkit/awt/vclxmenu.hxx>
#include <cppuhelper/supportsservice.hxx>
using namespace com::sun::star::uno;
using namespace com::sun::star::lang;
using namespace com::sun::star::frame;
-using namespace com::sun::star::beans;
-using namespace com::sun::star::util;
-using namespace com::sun::star::style;
using namespace com::sun::star::container;
namespace framework
@@ -74,27 +71,20 @@ void MacrosMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu > cons
if (bMacrosDisabled)
return;
- VCLXPopupMenu* pVCLPopupMenu = static_cast<VCLXPopupMenu *>(comphelper::getFromUnoTunnel<VCLXMenu>( rPopupMenu ));
- PopupMenu* pPopupMenu = nullptr;
-
SolarMutexGuard aSolarMutexGuard;
- resetPopupMenu( rPopupMenu );
- if ( pVCLPopupMenu )
- pPopupMenu = static_cast<PopupMenu *>(pVCLPopupMenu->GetMenu());
-
- if (!pPopupMenu)
- return;
+ resetPopupMenu(rPopupMenu);
+ assert(rPopupMenu->getItemCount() == 0);
// insert basic
OUString aCommand(".uno:MacroDialog");
auto aProperties = vcl::CommandInfoProvider::GetCommandProperties(aCommand, m_aModuleName);
OUString aDisplayName = vcl::CommandInfoProvider::GetMenuLabelForCommand(aProperties);
- pPopupMenu->InsertItem( 2, aDisplayName );
- pPopupMenu->SetItemCommand( 2, aCommand );
+ rPopupMenu->insertItem(2, aDisplayName, 0, 0);
+ rPopupMenu->setCommand(2, aCommand);
// insert providers but not basic or java
- addScriptItems( pPopupMenu, 4);
+ addScriptItems(rPopupMenu, 4);
}
// XEventListener
@@ -102,7 +92,7 @@ void SAL_CALL MacrosMenuController::disposing( const EventObject& )
{
Reference< css::awt::XMenuListener > xHolder(this);
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
m_xFrame.clear();
m_xDispatch.clear();
m_xContext.clear();
@@ -117,22 +107,24 @@ void SAL_CALL MacrosMenuController::disposing( const EventObject& )
// XStatusListener
void SAL_CALL MacrosMenuController::statusChanged( const FeatureStateEvent& )
{
- osl::MutexGuard aLock( m_aMutex );
+ std::unique_lock aLock( m_aMutex );
if ( m_xPopupMenu.is() )
{
fillPopupMenu( m_xPopupMenu );
}
}
-void MacrosMenuController::addScriptItems( PopupMenu* pPopupMenu, sal_uInt16 startItemId )
+void MacrosMenuController::addScriptItems(const Reference<css::awt::XPopupMenu>& rPopupMenu, sal_uInt16 startItemId)
{
- static const OUStringLiteral aCmdBase(u".uno:ScriptOrganizer?ScriptOrganizer.Language:string=");
- static const OUStringLiteral ellipsis( u"..." );
- static const OUStringLiteral providerKey(u"com.sun.star.script.provider.ScriptProviderFor");
+ static constexpr OUStringLiteral aCmdBase(u".uno:ScriptOrganizer?ScriptOrganizer.Language:string=");
+ static constexpr OUStringLiteral ellipsis( u"..." );
+ static constexpr OUString providerKey(u"com.sun.star.script.provider.ScriptProviderFor"_ustr);
sal_uInt16 itemId = startItemId;
Reference< XContentEnumerationAccess > xEnumAccess( m_xContext->getServiceManager(), UNO_QUERY_THROW );
Reference< XEnumeration > xEnum = xEnumAccess->createContentEnumeration ( "com.sun.star.script.provider.LanguageScriptProvider" );
+ sal_Int16 nPos = rPopupMenu->getItemCount();
+
while ( xEnum->hasMoreElements() )
{
Reference< XServiceInfo > xServiceInfo;
@@ -155,8 +147,8 @@ void MacrosMenuController::addScriptItems( PopupMenu* pPopupMenu, sal_uInt16 sta
}
aCommand += aDisplayName;
aDisplayName += ellipsis;
- pPopupMenu->InsertItem( itemId, aDisplayName );
- pPopupMenu->SetItemCommand( itemId, aCommand );
+ rPopupMenu->insertItem(itemId, aDisplayName, 0, nPos++);
+ rPopupMenu->setCommand(itemId, aCommand);
itemId++;
break;
}