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
         {

Reply via email to