summaryrefslogtreecommitdiff
path: root/sd
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2021-02-19 15:55:06 +0000
committerSzymon Kłos <szymon.klos@collabora.com>2021-05-25 12:12:31 +0200
commit3a3e8f0e6f44dec649ca4e6b3c511ce8bc08c48f (patch)
tree2a2d97a6f3fa5ef22bdf47bfbe6cae9285bd54d6 /sd
parentf5d58b04c9f9b8655681a6a9db81991dcd5ab75b (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.cxx15
-rw-r--r--sd/source/ui/sidebar/CurrentMasterPagesSelector.hxx3
-rw-r--r--sd/source/ui/sidebar/MasterPagesSelector.cxx37
-rw-r--r--sd/source/ui/sidebar/MasterPagesSelector.hxx4
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,