sw/UIConfig_swriter.mk | 1 sw/source/uibase/utlui/bookctrl.cxx | 47 +++++++-------------------------- sw/uiconfig/swriter/ui/bookmarkmenu.ui | 9 ++++++ 3 files changed, 21 insertions(+), 36 deletions(-)
New commits: commit 2e7fe9f0048f5afb957278e87106a81ba818dd8a Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Mon Feb 22 20:14:58 2021 +0000 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Tue Feb 23 10:16:01 2021 +0100 replace BookmarkPopup_Impl Change-Id: I87dda264ec61bbbfd6cf4eb0cbbe636724579537 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111360 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/sw/UIConfig_swriter.mk b/sw/UIConfig_swriter.mk index 655341ff28b1..16aaf178b3e3 100644 --- a/sw/UIConfig_swriter.mk +++ b/sw/UIConfig_swriter.mk @@ -103,6 +103,7 @@ $(eval $(call gb_UIConfig_add_uifiles,modules/swriter,\ sw/uiconfig/swriter/ui/autotext \ sw/uiconfig/swriter/ui/bibliographyentry \ sw/uiconfig/swriter/ui/bibliofragment \ + sw/uiconfig/swriter/ui/bookmarkmenu \ sw/uiconfig/swriter/ui/bulletsandnumbering \ sw/uiconfig/swriter/ui/businessdatapage \ sw/uiconfig/swriter/ui/calendar \ diff --git a/sw/source/uibase/utlui/bookctrl.cxx b/sw/source/uibase/utlui/bookctrl.cxx index d07744290151..f47bfe735ec9 100644 --- a/sw/source/uibase/utlui/bookctrl.cxx +++ b/sw/source/uibase/utlui/bookctrl.cxx @@ -28,7 +28,7 @@ #include <vcl/commandevent.hxx> #include <vcl/event.hxx> #include <vcl/status.hxx> -#include <vcl/menu.hxx> +#include <vcl/weldutils.hxx> #include <cmdid.h> #include <swmodule.hxx> #include <wrtsh.hxx> @@ -38,34 +38,6 @@ SFX_IMPL_STATUSBAR_CONTROL(SwBookmarkControl, SfxStringListItem); -namespace { - -class BookmarkPopup_Impl : public PopupMenu -{ -public: - BookmarkPopup_Impl(); - - sal_uInt16 GetCurId() const { return nCurId; } - -private: - sal_uInt16 nCurId; - - virtual void Select() override; -}; - -} - -BookmarkPopup_Impl::BookmarkPopup_Impl() : - PopupMenu(), - nCurId(USHRT_MAX) -{ -} - -void BookmarkPopup_Impl::Select() -{ - nCurId = GetCurItemId(); -} - SwBookmarkControl::SwBookmarkControl( sal_uInt16 _nSlotId, sal_uInt16 _nId, StatusBar& rStb ) : @@ -103,14 +75,16 @@ void SwBookmarkControl::Command( const CommandEvent& rCEvt ) GetStatusBar().GetItemText( GetId() ).isEmpty()) return; - ScopedVclPtrInstance<BookmarkPopup_Impl> aPop; SwWrtShell* pWrtShell = ::GetActiveWrtShell(); if( !(pWrtShell && pWrtShell->getIDocumentMarkAccess()->getAllMarksCount() > 0) ) return; + std::unique_ptr<weld::Builder> xBuilder(Application::CreateBuilder(nullptr, "modules/swriter/ui/bookmarkmenu.ui")); + std::unique_ptr<weld::Menu> xPopup(xBuilder->weld_menu("menu")); + IDocumentMarkAccess* const pMarkAccess = pWrtShell->getIDocumentMarkAccess(); IDocumentMarkAccess::const_iterator_t ppBookmarkStart = pMarkAccess->getBookmarksBegin(); - sal_uInt16 nPopupId = 1; + sal_uInt32 nPopupId = 1; std::map<sal_Int32, sal_uInt16> aBookmarkIdx; for(IDocumentMarkAccess::const_iterator_t ppBookmark = ppBookmarkStart; ppBookmark != pMarkAccess->getBookmarksEnd(); @@ -118,16 +92,17 @@ void SwBookmarkControl::Command( const CommandEvent& rCEvt ) { if(IDocumentMarkAccess::MarkType::BOOKMARK == IDocumentMarkAccess::GetType(**ppBookmark)) { - aPop->InsertItem( nPopupId, (*ppBookmark)->GetName() ); + xPopup->append(OUString::number(nPopupId), (*ppBookmark)->GetName()); aBookmarkIdx[nPopupId] = static_cast<sal_uInt16>(ppBookmark - ppBookmarkStart); nPopupId++; } } - aPop->Execute( &GetStatusBar(), rCEvt.GetMousePosPixel()); - sal_uInt16 nCurrId = aPop->GetCurId(); - if( nCurrId != USHRT_MAX) + ::tools::Rectangle aRect(rCEvt.GetMousePosPixel(), Size(1, 1)); + weld::Window* pParent = weld::GetPopupParent(GetStatusBar(), aRect); + OString sResult = xPopup->popup_at_rect(pParent, aRect); + if (!sResult.isEmpty()) { - SfxUInt16Item aBookmark( FN_STAT_BOOKMARK, aBookmarkIdx[nCurrId] ); + SfxUInt16Item aBookmark( FN_STAT_BOOKMARK, aBookmarkIdx[sResult.toUInt32()] ); SfxViewFrame::Current()->GetDispatcher()->ExecuteList(FN_STAT_BOOKMARK, SfxCallMode::ASYNCHRON|SfxCallMode::RECORD, { &aBookmark }); diff --git a/sw/uiconfig/swriter/ui/bookmarkmenu.ui b/sw/uiconfig/swriter/ui/bookmarkmenu.ui new file mode 100644 index 000000000000..53f81216379e --- /dev/null +++ b/sw/uiconfig/swriter/ui/bookmarkmenu.ui @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Generated with glade 3.38.2 --> +<interface domain="sw"> + <requires lib="gtk+" version="3.20"/> + <object class="GtkMenu" id="menu"> + <property name="visible">True</property> + <property name="can-focus">False</property> + </object> +</interface> _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits