framework/source/uielement/recentfilesmenucontroller.cxx | 44 ++++++++++----- framework/source/uielement/resourcemenucontroller.cxx | 29 ++++----- 2 files changed, 44 insertions(+), 29 deletions(-)
New commits: commit 984ad86e71a5abb0df7a2c14c61a270e956cba0f Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Sun Dec 12 21:25:54 2021 +0000 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Mon Dec 13 10:03:12 2021 +0100 prefer css::awt::XPopupMenu api Change-Id: I486e24b0b85357b43213443c1a9b71206b8f441a Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126711 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/framework/source/uielement/resourcemenucontroller.cxx b/framework/source/uielement/resourcemenucontroller.cxx index cebd11f03c19..7a1364b41f4c 100644 --- a/framework/source/uielement/resourcemenucontroller.cxx +++ b/framework/source/uielement/resourcemenucontroller.cxx @@ -385,25 +385,24 @@ SaveAsMenuController::SaveAsMenuController( const css::uno::Reference< css::uno: { } -void SaveAsMenuController::impl_setPopupMenu() +void InsertItem(const css::uno::Reference<css::awt::XPopupMenu>& rPopupMenu, + const OUString& rCommand) { - VCLXMenu* pPopupMenu = comphelper::getFromUnoTunnel<VCLXMenu>( m_xPopupMenu ); - Menu* pVCLPopupMenu = nullptr; + sal_uInt16 nItemId = rPopupMenu->getItemCount() + 1; + rPopupMenu->insertItem(nItemId, OUString(), 0, -1); + rPopupMenu->setCommand(nItemId, rCommand); +} +void SaveAsMenuController::impl_setPopupMenu() +{ SolarMutexGuard aGuard; - if ( pPopupMenu ) - pVCLPopupMenu = pPopupMenu->GetMenu(); - - if ( !pVCLPopupMenu ) - return; - - pVCLPopupMenu->InsertItem( ".uno:SaveAs", nullptr ); - pVCLPopupMenu->InsertItem( ".uno:ExportTo", nullptr ); - pVCLPopupMenu->InsertItem( ".uno:SaveACopy", nullptr ); - pVCLPopupMenu->InsertItem( ".uno:SaveAsTemplate", nullptr ); - pVCLPopupMenu->InsertSeparator(); - pVCLPopupMenu->InsertItem( ".uno:SaveAsRemote", nullptr ); + InsertItem(m_xPopupMenu, ".uno:SaveAs"); + InsertItem(m_xPopupMenu, ".uno:ExportTo"); + InsertItem(m_xPopupMenu, ".uno:SaveACopy"); + InsertItem(m_xPopupMenu, ".uno:SaveAsTemplate"); + m_xPopupMenu->insertSeparator(-1); + InsertItem(m_xPopupMenu, ".uno:SaveAsRemote"); } OUString SaveAsMenuController::getImplementationName() commit 9f326792c165ab1bcec7ccb6a3afad1c2b01f7b2 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Sun Dec 12 21:15:29 2021 +0000 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Mon Dec 13 10:02:59 2021 +0100 only use css::awt::XPopupMenu methods Change-Id: Icab3bc855e92c5f6389ee8129bcaaa1308619ca8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126710 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/framework/source/uielement/recentfilesmenucontroller.cxx b/framework/source/uielement/recentfilesmenucontroller.cxx index a805468850bc..897e3f55a916 100644 --- a/framework/source/uielement/recentfilesmenucontroller.cxx +++ b/framework/source/uielement/recentfilesmenucontroller.cxx @@ -26,10 +26,9 @@ #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> -#include <vcl/menu.hxx> #include <vcl/settings.hxx> #include <vcl/svapp.hxx> @@ -116,20 +115,37 @@ RecentFilesMenuController::RecentFilesMenuController( const uno::Reference< uno: } } +void InsertItem(const css::uno::Reference<css::awt::XPopupMenu>& rPopupMenu, + const OUString& rCommand, + const css::uno::Reference<css::frame::XFrame>& rFrame) +{ + sal_uInt16 nItemId = rPopupMenu->getItemCount() + 1; + + if (rFrame.is()) + { + OUString aModuleName(vcl::CommandInfoProvider::GetModuleIdentifier(rFrame)); + auto aProperties = vcl::CommandInfoProvider::GetCommandProperties(rCommand, aModuleName); + OUString aLabel(vcl::CommandInfoProvider::GetPopupLabelForCommand(aProperties)); + OUString aTooltip(vcl::CommandInfoProvider::GetTooltipForCommand(rCommand, aProperties, rFrame)); + css::uno::Reference<css::graphic::XGraphic> xGraphic(vcl::CommandInfoProvider::GetXGraphicForCommand(rCommand, rFrame)); + + rPopupMenu->insertItem(nItemId, aLabel, 0, -1); + rPopupMenu->setItemImage(nItemId, xGraphic, false); + rPopupMenu->setHelpText(nItemId, aTooltip); + } + else + rPopupMenu->insertItem(nItemId, OUString(), 0, -1); + + rPopupMenu->setCommand(nItemId, rCommand); +} + + // private function void RecentFilesMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu > const & rPopupMenu ) { - VCLXPopupMenu* pPopupMenu = static_cast<VCLXPopupMenu *>(comphelper::getFromUnoTunnel<VCLXMenu>( rPopupMenu )); - PopupMenu* pVCLPopupMenu = nullptr; - SolarMutexGuard aSolarMutexGuard; resetPopupMenu( rPopupMenu ); - if ( pPopupMenu ) - pVCLPopupMenu = static_cast<PopupMenu *>(pPopupMenu->GetMenu()); - - if ( !pVCLPopupMenu ) - return; std::vector< SvtHistoryOptions::HistoryItem > aHistoryList = SvtHistoryOptions::GetList( EHistoryType::PickList ); @@ -212,16 +228,16 @@ void RecentFilesMenuController::fillPopupMenu( Reference< css::awt::XPopupMenu > if ( m_bShowToolbarEntries ) { rPopupMenu->insertSeparator(-1); - pVCLPopupMenu->InsertItem( CMD_OPEN_AS_TEMPLATE, m_xFrame ); - pVCLPopupMenu->InsertItem( CMD_OPEN_REMOTE, m_xFrame ); + InsertItem(rPopupMenu, CMD_OPEN_AS_TEMPLATE, m_xFrame); + InsertItem(rPopupMenu, CMD_OPEN_REMOTE, m_xFrame); } } else { if ( m_bShowToolbarEntries ) { - pVCLPopupMenu->InsertItem( CMD_OPEN_AS_TEMPLATE, m_xFrame ); - pVCLPopupMenu->InsertItem( CMD_OPEN_REMOTE, m_xFrame ); + InsertItem(rPopupMenu, CMD_OPEN_AS_TEMPLATE, m_xFrame); + InsertItem(rPopupMenu, CMD_OPEN_REMOTE, m_xFrame); } else {