summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2023-01-13 14:50:36 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2023-01-14 06:36:24 +0000
commit793904ff3a7d8cceafab3d83a562261c4c17fd14 (patch)
tree66678c358588a687d56e8d1df221f13f24806b18
parent2ec4a66b6d049f5d11f4ceb993ed907c790ed592 (diff)
use more VCLXPopupMenu instead of XPopupMenu
which avoids a bunch of casting and makes the dependency explicit instead of implicit Change-Id: I754da72916fbbc51e7edc3c806155da34d347bd8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145472 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--framework/source/uielement/controlmenucontroller.cxx1
-rw-r--r--framework/source/uielement/fontmenucontroller.cxx1
-rw-r--r--framework/source/uielement/fontsizemenucontroller.cxx1
-rw-r--r--framework/source/uielement/headermenucontroller.cxx1
-rw-r--r--framework/source/uielement/langselectionmenucontroller.cxx1
-rw-r--r--framework/source/uielement/macrosmenucontroller.cxx1
-rw-r--r--framework/source/uielement/newmenucontroller.cxx6
-rw-r--r--framework/source/uielement/objectmenucontroller.cxx1
-rw-r--r--framework/source/uielement/popuptoolbarcontroller.cxx15
-rw-r--r--framework/source/uielement/recentfilesmenucontroller.cxx1
-rw-r--r--framework/source/uielement/resourcemenucontroller.cxx11
-rw-r--r--framework/source/uielement/thesaurusmenucontroller.cxx1
-rw-r--r--framework/source/uielement/toolbarmodemenucontroller.cxx4
-rw-r--r--framework/source/uielement/toolbarsmenucontroller.cxx4
-rw-r--r--include/sfx2/dispatch.hxx4
-rw-r--r--include/sfx2/viewsh.hxx7
-rw-r--r--include/svtools/popupmenucontrollerbase.hxx4
-rw-r--r--reportdesign/source/ui/report/ReportSection.cxx5
-rw-r--r--sfx2/source/control/dispatch.cxx8
-rw-r--r--sfx2/source/notebookbar/NotebookbarTabControl.cxx4
-rw-r--r--sfx2/source/view/viewsh.cxx10
-rw-r--r--svtools/source/uno/popupmenucontrollerbase.cxx4
-rw-r--r--sw/source/uibase/docvw/edtwin.cxx4
-rw-r--r--sw/source/uibase/docvw/romenu.hxx3
-rw-r--r--sw/source/uibase/inc/olmenu.hxx3
-rw-r--r--sw/source/uibase/uiview/viewling.cxx4
26 files changed, 58 insertions, 51 deletions
diff --git a/framework/source/uielement/controlmenucontroller.cxx b/framework/source/uielement/controlmenucontroller.cxx
index 2c31081bbe6b..dec13831646f 100644
--- a/framework/source/uielement/controlmenucontroller.cxx
+++ b/framework/source/uielement/controlmenucontroller.cxx
@@ -31,6 +31,7 @@
#include <vcl/settings.hxx>
#include <vcl/image.hxx>
#include <svtools/popupmenucontrollerbase.hxx>
+#include <toolkit/awt/vclxmenu.hxx>
#include <osl/mutex.hxx>
#include <unordered_map>
diff --git a/framework/source/uielement/fontmenucontroller.cxx b/framework/source/uielement/fontmenucontroller.cxx
index c0dd19e2e71a..e25b5b210b83 100644
--- a/framework/source/uielement/fontmenucontroller.cxx
+++ b/framework/source/uielement/fontmenucontroller.cxx
@@ -33,6 +33,7 @@
#include <vcl/mnemonic.hxx>
#include <osl/mutex.hxx>
#include <cppuhelper/supportsservice.hxx>
+#include <toolkit/awt/vclxmenu.hxx>
// Defines
diff --git a/framework/source/uielement/fontsizemenucontroller.cxx b/framework/source/uielement/fontsizemenucontroller.cxx
index 4c5c686888a9..e050c1659eb6 100644
--- a/framework/source/uielement/fontsizemenucontroller.cxx
+++ b/framework/source/uielement/fontsizemenucontroller.cxx
@@ -34,6 +34,7 @@
#include <vcl/print.hxx>
#include <vcl/settings.hxx>
#include <svtools/ctrltool.hxx>
+#include <toolkit/awt/vclxmenu.hxx>
#include <osl/mutex.hxx>
#include <memory>
#include <cppuhelper/supportsservice.hxx>
diff --git a/framework/source/uielement/headermenucontroller.cxx b/framework/source/uielement/headermenucontroller.cxx
index cbcdc33bc5fa..842e74559fac 100644
--- a/framework/source/uielement/headermenucontroller.cxx
+++ b/framework/source/uielement/headermenucontroller.cxx
@@ -33,6 +33,7 @@
#include <rtl/ustrbuf.hxx>
#include <osl/mutex.hxx>
#include <cppuhelper/supportsservice.hxx>
+#include <toolkit/awt/vclxmenu.hxx>
// Defines
diff --git a/framework/source/uielement/langselectionmenucontroller.cxx b/framework/source/uielement/langselectionmenucontroller.cxx
index 94918c02179a..51994c1021a0 100644
--- a/framework/source/uielement/langselectionmenucontroller.cxx
+++ b/framework/source/uielement/langselectionmenucontroller.cxx
@@ -29,6 +29,7 @@
#include <svl/languageoptions.hxx>
#include <svtools/langtab.hxx>
+#include <toolkit/awt/vclxmenu.hxx>
#include <classes/fwkresid.hxx>
#include <strings.hrc>
diff --git a/framework/source/uielement/macrosmenucontroller.cxx b/framework/source/uielement/macrosmenucontroller.cxx
index a0745b1e4f6f..b15b3191efe7 100644
--- a/framework/source/uielement/macrosmenucontroller.cxx
+++ b/framework/source/uielement/macrosmenucontroller.cxx
@@ -26,6 +26,7 @@
#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;
diff --git a/framework/source/uielement/newmenucontroller.cxx b/framework/source/uielement/newmenucontroller.cxx
index 14b59c263b85..c36818341ad0 100644
--- a/framework/source/uielement/newmenucontroller.cxx
+++ b/framework/source/uielement/newmenucontroller.cxx
@@ -395,15 +395,11 @@ void SAL_CALL NewMenuController::itemActivated( const css::awt::MenuEvent& )
if ( !(m_xFrame.is() && m_xPopupMenu.is()) )
return;
- VCLXPopupMenu* pPopupMenu = static_cast<VCLXPopupMenu *>(comphelper::getFromUnoTunnel<VCLXMenu>( m_xPopupMenu ));
- if ( !pPopupMenu )
- return;
-
const StyleSettings& rSettings = Application::GetSettings().GetStyleSettings();
bool bShowImages( rSettings.GetUseImagesInMenus() );
OUString aIconTheme( rSettings.DetermineIconTheme() );
- PopupMenu* pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu());
+ PopupMenu* pVCLPopupMenu = static_cast<PopupMenu *>(m_xPopupMenu->GetMenu());
if ( m_bShowImages != bShowImages || m_aIconTheme != aIconTheme )
{
diff --git a/framework/source/uielement/objectmenucontroller.cxx b/framework/source/uielement/objectmenucontroller.cxx
index 62b5586eeea9..7e9e056d4293 100644
--- a/framework/source/uielement/objectmenucontroller.cxx
+++ b/framework/source/uielement/objectmenucontroller.cxx
@@ -27,6 +27,7 @@
#include <cppuhelper/weak.hxx>
#include <vcl/svapp.hxx>
#include <osl/mutex.hxx>
+#include <toolkit/awt/vclxmenu.hxx>
using namespace com::sun::star::uno;
using namespace com::sun::star::lang;
diff --git a/framework/source/uielement/popuptoolbarcontroller.cxx b/framework/source/uielement/popuptoolbarcontroller.cxx
index ac025f8fc7c4..b17e8a6bfc60 100644
--- a/framework/source/uielement/popuptoolbarcontroller.cxx
+++ b/framework/source/uielement/popuptoolbarcontroller.cxx
@@ -79,7 +79,7 @@ protected:
bool m_bHasController;
bool m_bResourceURL;
OUString m_aPopupCommand;
- css::uno::Reference< css::awt::XPopupMenu > m_xPopupMenu;
+ rtl::Reference< VCLXPopupMenu > m_xPopupMenu;
private:
css::uno::Reference< css::frame::XUIControllerFactory > m_xPopupMenuFactory;
@@ -247,10 +247,7 @@ void PopupMenuToolbarController::createPopupMenuController()
try
{
- m_xPopupMenu.set(
- m_xContext->getServiceManager()->createInstanceWithContext(
- "com.sun.star.awt.PopupMenu", m_xContext ),
- css::uno::UNO_QUERY_THROW );
+ m_xPopupMenu = new VCLXPopupMenu();
if (m_bResourceURL)
{
@@ -357,7 +354,7 @@ void GenericPopupToolbarController::statusChanged( const css::frame::FeatureStat
ToolBoxItemId nId;
if ( getToolboxId( nId, &pToolBox ) && pToolBox->IsItemEnabled( nId ) )
{
- Menu* pVclMenu = comphelper::getFromUnoTunnel<VCLXMenu>( m_xPopupMenu )->GetMenu();
+ Menu* pVclMenu = m_xPopupMenu->GetMenu();
pVclMenu->Activate();
pVclMenu->Deactivate();
}
@@ -697,8 +694,7 @@ void SAL_CALL NewToolbarController::execute( sal_Int16 /*KeyModifier*/ )
aURL = m_xPopupMenu->getCommand(m_nMenuId);
// TODO investigate how to wrap Get/SetUserValue in css::awt::XMenu
- VCLXMenu* pMenu = comphelper::getFromUnoTunnel<VCLXMenu>(m_xPopupMenu);
- MenuAttributes* pMenuAttributes(static_cast<MenuAttributes*>(pMenu->getUserValue(m_nMenuId)));
+ MenuAttributes* pMenuAttributes(static_cast<MenuAttributes*>(m_xPopupMenu->getUserValue(m_nMenuId)));
if ( pMenuAttributes )
aTarget = pMenuAttributes->aTargetFrame;
else
@@ -750,8 +746,7 @@ void SAL_CALL NewToolbarController::updateImage()
if ( m_xPopupMenu.is() && m_nMenuId )
{
aURL = m_xPopupMenu->getCommand(m_nMenuId);
- VCLXMenu* pMenu = comphelper::getFromUnoTunnel<VCLXMenu>(m_xPopupMenu);
- MenuAttributes* pMenuAttributes(static_cast<MenuAttributes*>(pMenu->getUserValue(m_nMenuId)));
+ MenuAttributes* pMenuAttributes(static_cast<MenuAttributes*>(m_xPopupMenu->getUserValue(m_nMenuId)));
if ( pMenuAttributes )
aImageId = pMenuAttributes->aImageId;
}
diff --git a/framework/source/uielement/recentfilesmenucontroller.cxx b/framework/source/uielement/recentfilesmenucontroller.cxx
index dc4001a1f645..fe7de1c3d907 100644
--- a/framework/source/uielement/recentfilesmenucontroller.cxx
+++ b/framework/source/uielement/recentfilesmenucontroller.cxx
@@ -26,6 +26,7 @@
#include <svtools/imagemgr.hxx>
#include <svtools/popupmenucontrollerbase.hxx>
#include <tools/urlobj.hxx>
+#include <toolkit/awt/vclxmenu.hxx>
#include <unotools/historyoptions.hxx>
#include <vcl/commandinfoprovider.hxx>
#include <vcl/graph.hxx>
diff --git a/framework/source/uielement/resourcemenucontroller.cxx b/framework/source/uielement/resourcemenucontroller.cxx
index 7a1364b41f4c..c1757895ee5b 100644
--- a/framework/source/uielement/resourcemenucontroller.cxx
+++ b/framework/source/uielement/resourcemenucontroller.cxx
@@ -225,7 +225,7 @@ void ResourceMenuController::updatePopupMenu()
m_nNewMenuId = 1;
// Now fill the menu with the configuration data.
- framework::MenuBarManager::FillMenu( m_nNewMenuId, comphelper::getFromUnoTunnel<VCLXMenu>( m_xPopupMenu )->GetMenu(), m_aModuleName, m_xMenuContainer, m_xDispatchProvider );
+ framework::MenuBarManager::FillMenu( m_nNewMenuId, m_xPopupMenu->GetMenu(), m_aModuleName, m_xMenuContainer, m_xDispatchProvider );
// For context menus, add object verbs.
if ( !m_bContextMenu )
@@ -259,8 +259,7 @@ void ResourceMenuController::addVerbs( const css::uno::Sequence< css::embed::Ver
xStorable.set( xController->getModel(), css::uno::UNO_QUERY );
bool bReadOnly = xStorable.is() && xStorable->isReadonly();
- VCLXMenu* pAwtMenu = comphelper::getFromUnoTunnel<VCLXMenu>( m_xPopupMenu );
- Menu* pVCLMenu = pAwtMenu->GetMenu();
+ Menu* pVCLMenu = m_xPopupMenu->GetMenu();
for ( const auto& rVerb : rVerbs )
{
@@ -279,9 +278,8 @@ void ResourceMenuController::itemActivated( const css::awt::MenuEvent& /*rEvent*
// Must initialize MenuBarManager here, because we want to let the app do context menu interception before.
if ( !m_xMenuBarManager.is() )
{
- VCLXMenu* pAwtMenu = comphelper::getFromUnoTunnel<VCLXMenu>( m_xPopupMenu );
m_xMenuBarManager.set( new framework::MenuBarManager(
- m_xContext, m_xFrame, m_xURLTransformer, m_xDispatchProvider, m_aModuleName, pAwtMenu->GetMenu(), false, !m_bContextMenu && !m_bInToolbar ) );
+ m_xContext, m_xFrame, m_xURLTransformer, m_xDispatchProvider, m_aModuleName, m_xPopupMenu->GetMenu(), false, !m_bContextMenu && !m_bInToolbar ) );
m_xFrame->addFrameActionListener( m_xMenuBarManager );
}
}
@@ -475,8 +473,7 @@ void WindowListMenuController::itemActivated( const css::awt::MenuEvent& rEvent
{
SolarMutexGuard g;
- VCLXMenu* pAwtMenu = comphelper::getFromUnoTunnel<VCLXMenu>( m_xPopupMenu );
- Menu* pVCLMenu = pAwtMenu->GetMenu();
+ Menu* pVCLMenu = m_xPopupMenu->GetMenu();
int nItemCount = pVCLMenu->GetItemCount();
if ( nItemCount > 0 )
diff --git a/framework/source/uielement/thesaurusmenucontroller.cxx b/framework/source/uielement/thesaurusmenucontroller.cxx
index a0e9f93218f2..6a834757c3fa 100644
--- a/framework/source/uielement/thesaurusmenucontroller.cxx
+++ b/framework/source/uielement/thesaurusmenucontroller.cxx
@@ -24,6 +24,7 @@
#include <svl/lngmisc.hxx>
#include <svtools/popupmenucontrollerbase.hxx>
#include <comphelper/diagnose_ex.hxx>
+#include <toolkit/awt/vclxmenu.hxx>
#include <unotools/lingucfg.hxx>
#include <vcl/commandinfoprovider.hxx>
diff --git a/framework/source/uielement/toolbarmodemenucontroller.cxx b/framework/source/uielement/toolbarmodemenucontroller.cxx
index 1740bf1f1405..cf967788a5aa 100644
--- a/framework/source/uielement/toolbarmodemenucontroller.cxx
+++ b/framework/source/uielement/toolbarmodemenucontroller.cxx
@@ -26,6 +26,7 @@
#include <com/sun/star/frame/ModuleManager.hpp>
+#include <toolkit/awt/vclxmenu.hxx>
#include <officecfg/Office/Common.hxx>
#include <vcl/svapp.hxx>
#include <vcl/EnumContext.hxx>
@@ -276,7 +277,8 @@ void SAL_CALL ToolbarModeMenuController::setPopupMenu( const Reference< css::awt
// Create popup menu on demand
SolarMutexGuard aSolarMutexGuard;
- m_xPopupMenu = xPopupMenu;
+ m_xPopupMenu = dynamic_cast<VCLXPopupMenu*>(xPopupMenu.get());
+ assert(bool(xPopupMenu) == bool(m_xPopupMenu) && "we only support VCLXPopupMenu");
m_xPopupMenu->addMenuListener( Reference< css::awt::XMenuListener >(this) );
fillPopupMenu( m_xPopupMenu );
}
diff --git a/framework/source/uielement/toolbarsmenucontroller.cxx b/framework/source/uielement/toolbarsmenucontroller.cxx
index 730190240334..aa2ebd88d039 100644
--- a/framework/source/uielement/toolbarsmenucontroller.cxx
+++ b/framework/source/uielement/toolbarsmenucontroller.cxx
@@ -47,6 +47,7 @@
#include <vcl/settings.hxx>
#include <vcl/commandinfoprovider.hxx>
#include <rtl/ustrbuf.hxx>
+#include <toolkit/awt/vclxmenu.hxx>
#include <toolkit/helper/vclunohelper.hxx>
#include <vcl/window.hxx>
#include <unotools/cmdoptions.hxx>
@@ -714,7 +715,8 @@ void SAL_CALL ToolbarsMenuController::setPopupMenu( const Reference< css::awt::X
// Create popup menu on demand
SolarMutexGuard aSolarMutexGuard;
- m_xPopupMenu = xPopupMenu;
+ m_xPopupMenu = dynamic_cast<VCLXPopupMenu*>(xPopupMenu.get());
+ assert(bool(xPopupMenu) == bool(m_xPopupMenu) && "we only support VCLXPopupMenu");
m_xPopupMenu->addMenuListener( Reference< css::awt::XMenuListener >(this) );
fillPopupMenu( m_xPopupMenu );
}
diff --git a/include/sfx2/dispatch.hxx b/include/sfx2/dispatch.hxx
index ee445710b9c0..9b3fed6d5f23 100644
--- a/include/sfx2/dispatch.hxx
+++ b/include/sfx2/dispatch.hxx
@@ -21,6 +21,7 @@
#include <memory>
#include <sal/config.h>
+#include <rtl/ref.hxx>
#include <sfx2/dllapi.h>
#include <sfx2/toolbarids.hxx>
#include <sal/types.h>
@@ -39,6 +40,7 @@ class SfxItemSet;
class SfxModule;
class Point;
struct SfxDispatcher_Impl;
+class VCLXPopupMenu;
namespace com::sun::star::awt { class XPopupMenu; }
namespace vcl { class Window; }
@@ -176,7 +178,7 @@ public:
SAL_DLLPRIVATE void DoDeactivate_Impl( bool bMDI, SfxViewFrame const * pNew );
SAL_DLLPRIVATE void InvalidateBindings_Impl(bool);
- static boost::property_tree::ptree fillPopupMenu(const css::uno::Reference<css::awt::XPopupMenu>& rMenu);
+ static boost::property_tree::ptree fillPopupMenu(const rtl::Reference<VCLXPopupMenu>& rMenu);
};
#endif
diff --git a/include/sfx2/viewsh.hxx b/include/sfx2/viewsh.hxx
index bb805cdc4179..8efa98a13e4f 100644
--- a/include/sfx2/viewsh.hxx
+++ b/include/sfx2/viewsh.hxx
@@ -57,6 +57,7 @@ class NotifyEvent;
class SfxInPlaceClient;
class SfxLokCallbackInterface;
class SfxStoringHelper;
+class VCLXPopupMenu;
namespace rtl { class OStringBuffer; }
namespace vcl { class PrinterController; }
@@ -304,11 +305,11 @@ public:
void SetController( SfxBaseController* pController );
css::uno::Reference<css::frame::XController> GetController() const;
- bool TryContextMenuInterception(const css::uno::Reference<css::awt::XPopupMenu>& rIn,
+ bool TryContextMenuInterception(const rtl::Reference<VCLXPopupMenu>& rIn,
const OUString& rMenuIdentifier,
- css::uno::Reference<css::awt::XPopupMenu>& rOut,
+ rtl::Reference<VCLXPopupMenu>& rOut,
css::ui::ContextMenuExecuteEvent aEvent);
- bool TryContextMenuInterception(const css::uno::Reference<css::awt::XPopupMenu>&,
+ bool TryContextMenuInterception(const rtl::Reference<VCLXPopupMenu>&,
const OUString& rMenuIdentifier,
css::ui::ContextMenuExecuteEvent aEvent);
diff --git a/include/svtools/popupmenucontrollerbase.hxx b/include/svtools/popupmenucontrollerbase.hxx
index ef365a876592..7f34ac2e02b5 100644
--- a/include/svtools/popupmenucontrollerbase.hxx
+++ b/include/svtools/popupmenucontrollerbase.hxx
@@ -32,11 +32,13 @@
#include <tools/link.hxx>
#include <cppuhelper/compbase.hxx>
#include <cppuhelper/basemutex.hxx>
+#include <rtl/ref.hxx>
#include <rtl/ustring.hxx>
namespace com :: sun :: star :: frame { class XFrame; }
namespace com :: sun :: star :: uno { class XComponentContext; }
namespace com :: sun :: star :: util { class XURLTransformer; }
+class VCLXPopupMenu;
namespace svt
{
@@ -117,7 +119,7 @@ namespace svt
css::uno::Reference< css::frame::XDispatch > m_xDispatch;
css::uno::Reference< css::frame::XFrame > m_xFrame;
css::uno::Reference< css::util::XURLTransformer > m_xURLTransformer;
- css::uno::Reference< css::awt::XPopupMenu > m_xPopupMenu;
+ rtl::Reference< VCLXPopupMenu > m_xPopupMenu;
};
}
diff --git a/reportdesign/source/ui/report/ReportSection.cxx b/reportdesign/source/ui/report/ReportSection.cxx
index 1d9ccd42c4e9..c246aeb9971c 100644
--- a/reportdesign/source/ui/report/ReportSection.cxx
+++ b/reportdesign/source/ui/report/ReportSection.cxx
@@ -42,6 +42,7 @@
#include <com/sun/star/awt/PopupMenuDirection.hpp>
#include <com/sun/star/frame/XPopupMenuController.hpp>
#include <comphelper/propertyvalue.hxx>
+#include <toolkit/awt/vclxmenu.hxx>
#include <toolkit/helper/convert.hxx>
#include <comphelper/diagnose_ex.hxx>
#include <RptDef.hxx>
@@ -434,9 +435,7 @@ void OReportSection::Command( const CommandEvent& _rCEvt )
if (!xMenuController.is())
return;
- css::uno::Reference<css::awt::XPopupMenu> xPopupMenu(
- xContext->getServiceManager()->createInstanceWithContext(
- "com.sun.star.awt.PopupMenu", xContext), css::uno::UNO_QUERY);
+ rtl::Reference<VCLXPopupMenu> xPopupMenu = new VCLXPopupMenu();
if (!xPopupMenu.is())
return;
diff --git a/sfx2/source/control/dispatch.cxx b/sfx2/source/control/dispatch.cxx
index 17edf97cc16d..e72f4706dd8e 100644
--- a/sfx2/source/control/dispatch.cxx
+++ b/sfx2/source/control/dispatch.cxx
@@ -1801,10 +1801,9 @@ boost::property_tree::ptree fillPopupMenu(Menu* pMenu)
}
-boost::property_tree::ptree SfxDispatcher::fillPopupMenu(const css::uno::Reference<css::awt::XPopupMenu>& rPopupMenu)
+boost::property_tree::ptree SfxDispatcher::fillPopupMenu(const rtl::Reference<VCLXPopupMenu>& rPopupMenu)
{
- VCLXMenu* pAwtMenu = comphelper::getFromUnoTunnel<VCLXMenu>(rPopupMenu);
- PopupMenu* pVCLMenu = static_cast<PopupMenu*>(pAwtMenu->GetMenu());
+ PopupMenu* pVCLMenu = static_cast<PopupMenu*>(rPopupMenu->GetMenu());
return ::fillPopupMenu(pVCLMenu);
}
@@ -1821,8 +1820,7 @@ void SfxDispatcher::ExecutePopup( const OUString& rResName, vcl::Window* pWin, c
xContext->getServiceManager()->createInstanceWithArgumentsAndContext(
"com.sun.star.comp.framework.ResourceMenuController", aArgs, xContext ), css::uno::UNO_QUERY );
- css::uno::Reference< css::awt::XPopupMenu > xPopupMenu( xContext->getServiceManager()->createInstanceWithContext(
- "com.sun.star.awt.PopupMenu", xContext ), css::uno::UNO_QUERY );
+ rtl::Reference< VCLXPopupMenu > xPopupMenu = new VCLXPopupMenu();
if ( !xPopupController.is() || !xPopupMenu.is() )
return;
diff --git a/sfx2/source/notebookbar/NotebookbarTabControl.cxx b/sfx2/source/notebookbar/NotebookbarTabControl.cxx
index 706add207855..f64e16e2a42c 100644
--- a/sfx2/source/notebookbar/NotebookbarTabControl.cxx
+++ b/sfx2/source/notebookbar/NotebookbarTabControl.cxx
@@ -34,6 +34,7 @@
#include <comphelper/processfactory.hxx>
#include <comphelper/propertyvalue.hxx>
#include <sidebar/SidebarToolBox.hxx>
+#include <toolkit/awt/vclxmenu.hxx>
#include <cppuhelper/implbase.hxx>
#define ICON_SIZE 25
@@ -341,8 +342,7 @@ IMPL_LINK(NotebookbarTabControl, OpenNotebookbarPopupMenu, NotebookBar*, pNotebo
xContext->getServiceManager()->createInstanceWithArgumentsAndContext(
"com.sun.star.comp.framework.ResourceMenuController", aArgs, xContext), UNO_QUERY);
- Reference<css::awt::XPopupMenu> xPopupMenu(xContext->getServiceManager()->createInstanceWithContext(
- "com.sun.star.awt.PopupMenu", xContext), UNO_QUERY);
+ rtl::Reference<VCLXPopupMenu> xPopupMenu = new VCLXPopupMenu();
if (!xPopupController.is() || !xPopupMenu.is())
return;
diff --git a/sfx2/source/view/viewsh.cxx b/sfx2/source/view/viewsh.cxx
index 108574d410e2..1d494878a0a2 100644
--- a/sfx2/source/view/viewsh.cxx
+++ b/sfx2/source/view/viewsh.cxx
@@ -89,6 +89,7 @@
#include <iostream>
#include <vector>
#include <libxml/xmlwriter.h>
+#include <toolkit/awt/vclxmenu.hxx>
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
@@ -1877,9 +1878,9 @@ void SfxViewShell::RemoveContextMenuInterceptor_Impl( const uno::Reference< ui::
pImpl->aInterceptorContainer.removeInterface( g, xInterceptor );
}
-bool SfxViewShell::TryContextMenuInterception(const css::uno::Reference<css::awt::XPopupMenu>& rIn,
+bool SfxViewShell::TryContextMenuInterception(const rtl::Reference<VCLXPopupMenu>& rIn,
const OUString& rMenuIdentifier,
- css::uno::Reference<css::awt::XPopupMenu>& rOut,
+ rtl::Reference<VCLXPopupMenu>& rOut,
ui::ContextMenuExecuteEvent aEvent)
{
rOut.clear();
@@ -1940,15 +1941,14 @@ bool SfxViewShell::TryContextMenuInterception(const css::uno::Reference<css::awt
if (bModified)
{
// container was modified, create a new menu out of it
- css::uno::Reference<uno::XComponentContext> xContext(::comphelper::getProcessComponentContext(), css::uno::UNO_SET_THROW);
- rOut.set(xContext->getServiceManager()->createInstanceWithContext("com.sun.star.awt.PopupMenu", xContext), css::uno::UNO_QUERY_THROW);
+ rOut = new VCLXPopupMenu();
::framework::ActionTriggerHelper::CreateMenuFromActionTriggerContainer(rOut, aEvent.ActionTriggerContainer);
}
return true;
}
-bool SfxViewShell::TryContextMenuInterception(const css::uno::Reference<css::awt::XPopupMenu>& rPopupMenu,
+bool SfxViewShell::TryContextMenuInterception(const rtl::Reference<VCLXPopupMenu>& rPopupMenu,
const OUString& rMenuIdentifier, css::ui::ContextMenuExecuteEvent aEvent)
{
bool bModified = false;
diff --git a/svtools/source/uno/popupmenucontrollerbase.cxx b/svtools/source/uno/popupmenucontrollerbase.cxx
index b4a4cbdc8bda..fe6ea88392b6 100644
--- a/svtools/source/uno/popupmenucontrollerbase.cxx
+++ b/svtools/source/uno/popupmenucontrollerbase.cxx
@@ -29,6 +29,7 @@
#include <vcl/svapp.hxx>
#include <osl/mutex.hxx>
#include <cppuhelper/supportsservice.hxx>
+#include <toolkit/awt/vclxmenu.hxx>
using namespace com::sun::star;
using namespace css::uno;
@@ -341,7 +342,8 @@ void SAL_CALL PopupMenuControllerBase::setPopupMenu( const Reference< awt::XPopu
// Create popup menu on demand
SolarMutexGuard aSolarMutexGuard;
- m_xPopupMenu = xPopupMenu;
+ m_xPopupMenu = dynamic_cast<VCLXPopupMenu*>(xPopupMenu.get());
+ assert(bool(xPopupMenu) == bool(m_xPopupMenu) && "we only support VCLXPopupMenu");
m_xPopupMenu->addMenuListener( Reference< awt::XMenuListener >(this) );
Reference< XDispatchProvider > xDispatchProvider( m_xFrame, UNO_QUERY );
diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx
index 1d3a740126cd..b0a320168924 100644
--- a/sw/source/uibase/docvw/edtwin.cxx
+++ b/sw/source/uibase/docvw/edtwin.cxx
@@ -5593,8 +5593,8 @@ void SwEditWin::Command( const CommandEvent& rCEvt )
aEvent.SourceWindow = VCLUnoHelper::GetInterface( this );
aEvent.ExecutePosition.X = aPixPos.X();
aEvent.ExecutePosition.Y = aPixPos.Y();
- css::uno::Reference<css::awt::XPopupMenu> xMenu;
- auto xMenuInterface = aROPopup.CreateMenuInterface();
+ rtl::Reference<VCLXPopupMenu> xMenu;
+ rtl::Reference<VCLXPopupMenu> xMenuInterface = aROPopup.CreateMenuInterface();
if (GetView().TryContextMenuInterception(xMenuInterface, "private:resource/ReadonlyContextMenu", xMenu, aEvent))
{
if (xMenu.is())
diff --git a/sw/source/uibase/docvw/romenu.hxx b/sw/source/uibase/docvw/romenu.hxx
index 8961b93d7f12..1af58d3dee6d 100644
--- a/sw/source/uibase/docvw/romenu.hxx
+++ b/sw/source/uibase/docvw/romenu.hxx
@@ -20,6 +20,7 @@
#pragma once
#include <editeng/brushitem.hxx>
+#include <toolkit/awt/vclxmenu.hxx>
#include <vcl/builder.hxx>
#include <vcl/graph.hxx>
#include <vcl/menu.hxx>
@@ -70,7 +71,7 @@ class SwReadOnlyPopup
public:
SwReadOnlyPopup(const Point &rDPos, SwView &rV);
- css::uno::Reference<css::awt::XPopupMenu> CreateMenuInterface() { return m_xMenu->CreateMenuInterface(); }
+ rtl::Reference<VCLXPopupMenu> CreateMenuInterface() { return new VCLXPopupMenu(m_xMenu); }
~SwReadOnlyPopup();
void Execute( vcl::Window* pWin, const Point &rPPos );
diff --git a/sw/source/uibase/inc/olmenu.hxx b/sw/source/uibase/inc/olmenu.hxx
index fc043046c93e..a071b6b5cf5f 100644
--- a/sw/source/uibase/inc/olmenu.hxx
+++ b/sw/source/uibase/inc/olmenu.hxx
@@ -24,6 +24,7 @@
#include <com/sun/star/uno/Sequence.h>
#include <rtl/ustring.hxx>
+#include <toolkit/awt/vclxmenu.hxx>
#include <vcl/builder.hxx>
#include <vcl/menu.hxx>
@@ -129,7 +130,7 @@ public:
return *m_xPopupMenu;
}
- css::uno::Reference<css::awt::XPopupMenu> CreateMenuInterface() { return m_xPopupMenu->CreateMenuInterface(); }
+ rtl::Reference<VCLXPopupMenu> CreateMenuInterface() { return new VCLXPopupMenu(m_xPopupMenu); }
void Execute( const tools::Rectangle& rPopupPos, vcl::Window* pWin );
void Execute( sal_uInt16 nId );
diff --git a/sw/source/uibase/uiview/viewling.cxx b/sw/source/uibase/uiview/viewling.cxx
index 45b1851ad3c5..e6e337b6ccd2 100644
--- a/sw/source/uibase/uiview/viewling.cxx
+++ b/sw/source/uibase/uiview/viewling.cxx
@@ -723,11 +723,11 @@ bool SwView::ExecSpellPopup(const Point& rPt)
aEvent.SourceWindow = VCLUnoHelper::GetInterface( m_pEditWin );
aEvent.ExecutePosition.X = aPixPos.X();
aEvent.ExecutePosition.Y = aPixPos.Y();
- css::uno::Reference<css::awt::XPopupMenu> xMenu;
+ rtl::Reference<VCLXPopupMenu> xMenu;
OUString sMenuName = bUseGrammarContext ?
OUString("private:resource/GrammarContextMenu") : OUString("private:resource/SpellContextMenu");
- auto xMenuInterface = xPopup->CreateMenuInterface();
+ rtl::Reference<VCLXPopupMenu> xMenuInterface = xPopup->CreateMenuInterface();
if (TryContextMenuInterception(xMenuInterface, sMenuName, xMenu, aEvent))
{
//! happy hacking for context menu modifying extensions of this