diff options
author | Caolán McNamara <caolanm@redhat.com> | 2021-02-19 15:55:06 +0000 |
---|---|---|
committer | Szymon Kłos <szymon.klos@collabora.com> | 2021-05-25 12:12:31 +0200 |
commit | 3a3e8f0e6f44dec649ca4e6b3c511ce8bc08c48f (patch) | |
tree | 2a2d97a6f3fa5ef22bdf47bfbe6cae9285bd54d6 /sd | |
parent | f5d58b04c9f9b8655681a6a9db81991dcd5ab75b (diff) |
weld MasterPagesSelector context menus
Change-Id: I0ed933d81ef8f5004c8efa36dd0cdcdca947a0a7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111233
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'sd')
-rw-r--r-- | sd/source/ui/sidebar/CurrentMasterPagesSelector.cxx | 15 | ||||
-rw-r--r-- | sd/source/ui/sidebar/CurrentMasterPagesSelector.hxx | 3 | ||||
-rw-r--r-- | sd/source/ui/sidebar/MasterPagesSelector.cxx | 37 | ||||
-rw-r--r-- | sd/source/ui/sidebar/MasterPagesSelector.hxx | 4 |
4 files changed, 16 insertions, 43 deletions
diff --git a/sd/source/ui/sidebar/CurrentMasterPagesSelector.cxx b/sd/source/ui/sidebar/CurrentMasterPagesSelector.cxx index 9eba6427953d..93fb071b8080 100644 --- a/sd/source/ui/sidebar/CurrentMasterPagesSelector.cxx +++ b/sd/source/ui/sidebar/CurrentMasterPagesSelector.cxx @@ -215,24 +215,17 @@ void CurrentMasterPagesSelector::ExecuteCommand(const OString &rIdent) MasterPagesSelector::ExecuteCommand(rIdent); } -void CurrentMasterPagesSelector::ProcessPopupMenu (Menu& rMenu) +void CurrentMasterPagesSelector::ProcessPopupMenu(weld::Menu& rMenu) { // Disable the delete entry when there is only one master page. if (mrDocument.GetMasterPageUserCount(GetSelectedMasterPage()) > 0) - { - sal_uInt16 nItemid = rMenu.GetItemId("delete"); - if (rMenu.GetItemPos(nItemid) != MENU_ITEM_NOTFOUND) - rMenu.EnableItem(nItemid, false); - } + rMenu.set_sensitive("delete", false); std::shared_ptr<DrawViewShell> pDrawViewShell ( std::dynamic_pointer_cast<DrawViewShell>(mrBase.GetMainViewShell())); - if (pDrawViewShell - && pDrawViewShell->GetEditMode() == EditMode::MasterPage) + if (pDrawViewShell && pDrawViewShell->GetEditMode() == EditMode::MasterPage) { - sal_uInt16 nItemid = rMenu.GetItemId("edit"); - if (rMenu.GetItemPos(nItemid) != MENU_ITEM_NOTFOUND) - rMenu.EnableItem(nItemid, false); + rMenu.set_sensitive("edit", false); } MasterPagesSelector::ProcessPopupMenu(rMenu); diff --git a/sd/source/ui/sidebar/CurrentMasterPagesSelector.hxx b/sd/source/ui/sidebar/CurrentMasterPagesSelector.hxx index 87244b530f81..889996f7160a 100644 --- a/sd/source/ui/sidebar/CurrentMasterPagesSelector.hxx +++ b/sd/source/ui/sidebar/CurrentMasterPagesSelector.hxx @@ -24,7 +24,6 @@ #include "MasterPagesSelector.hxx" - namespace sd::tools { class EventMultiplexerEvent; } namespace sd::sidebar { @@ -57,7 +56,7 @@ public: protected: virtual OUString GetContextMenuUIFile() const override; - virtual void ProcessPopupMenu (Menu& rMenu) override; + virtual void ProcessPopupMenu(weld::Menu& rMenu) override; virtual void ExecuteCommand(const OString &rIdent) override; private: diff --git a/sd/source/ui/sidebar/MasterPagesSelector.cxx b/sd/source/ui/sidebar/MasterPagesSelector.cxx index eaa3b1e62f79..34da188891b3 100644 --- a/sd/source/ui/sidebar/MasterPagesSelector.cxx +++ b/sd/source/ui/sidebar/MasterPagesSelector.cxx @@ -38,6 +38,7 @@ #include <vcl/commandevent.hxx> #include <vcl/image.hxx> #include <vcl/floatwin.hxx> +#include <vcl/weldutils.hxx> #include <sfx2/dispatch.hxx> #include <sfx2/viewfrm.hxx> #include <sfx2/sidebar/Theme.hxx> @@ -207,40 +208,22 @@ void MasterPagesSelector::ShowContextMenu(const Point* pPos) aPosition = *pPos; // Setup the menu. - VclBuilder aBuilder(nullptr, AllSettings::GetUIRootDir(), GetContextMenuUIFile(), ""); - VclPtr<PopupMenu> pMenu(aBuilder.get_menu("menu")); - FloatingWindow* pMenuWindow = dynamic_cast<FloatingWindow*>(pMenu->GetWindow()); - if (pMenuWindow != nullptr) - pMenuWindow->SetPopupModeFlags( - pMenuWindow->GetPopupModeFlags() | FloatWinPopupFlags::NoMouseUpClose); - pMenu->SetSelectHdl(LINK(this, MasterPagesSelector, OnMenuItemSelected)); - - ProcessPopupMenu(*pMenu); - + std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(nullptr, GetContextMenuUIFile())); + std::unique_ptr<weld::Menu> xMenu(xBuilder->weld_menu("menu")); + ProcessPopupMenu(*xMenu); + ::tools::Rectangle aRect(aPosition, Size(1,1)); + weld::Window* pParent = weld::GetPopupParent(*this, aRect); // Show the menu. - pMenu->Execute(this, ::tools::Rectangle(aPosition,Size(1,1)), PopupMenuFlags::ExecuteDown); + ExecuteCommand(xMenu->popup_at_rect(pParent, aRect)); } -void MasterPagesSelector::ProcessPopupMenu (Menu& rMenu) +void MasterPagesSelector::ProcessPopupMenu(weld::Menu& rMenu) { // Disable some entries. if (mpContainer->GetPreviewSize() == MasterPageContainer::SMALL) - rMenu.EnableItem(rMenu.GetItemId("small"), false); + rMenu.set_sensitive("small", false); else - rMenu.EnableItem(rMenu.GetItemId("large"), false); -} - -IMPL_LINK(MasterPagesSelector, OnMenuItemSelected, Menu*, pMenu, bool) -{ - if (pMenu == nullptr) - { - OSL_ENSURE(pMenu!=nullptr, "MasterPagesSelector::OnMenuItemSelected: illegal menu!"); - return false; - } - - pMenu->Deactivate(); - ExecuteCommand(pMenu->GetCurItemIdent()); - return false; + rMenu.set_sensitive("large", false); } void MasterPagesSelector::ExecuteCommand(const OString &rIdent) diff --git a/sd/source/ui/sidebar/MasterPagesSelector.hxx b/sd/source/ui/sidebar/MasterPagesSelector.hxx index 9d9ee0914d84..5d3bc319bda9 100644 --- a/sd/source/ui/sidebar/MasterPagesSelector.hxx +++ b/sd/source/ui/sidebar/MasterPagesSelector.hxx @@ -151,9 +151,8 @@ protected: */ virtual OUString GetContextMenuUIFile() const; - virtual void ProcessPopupMenu (Menu& rMenu); + virtual void ProcessPopupMenu(weld::Menu& rMenu); virtual void ExecuteCommand(const OString& rIdent); - private: css::uno::Reference<css::ui::XSidebar> mxSidebar; @@ -164,7 +163,6 @@ private: DECL_LINK(ClickHandler, ValueSet*, void); DECL_LINK(ContextMenuHandler, const Point*, void); DECL_LINK(ContainerChangeListener, MasterPageContainerChangeEvent&, void); - DECL_LINK(OnMenuItemSelected, Menu*, bool); void SetItem ( sal_uInt16 nIndex, |