sw/source/uibase/utlui/bookctrl.cxx |    9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

New commits:
commit 3d4fe20029f101538895ba3d6f5abf6a3d014560
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Thu May 22 12:48:21 2025 +0100
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Thu May 22 22:42:56 2025 +0200

    Resolves: tdf#164226 escape mnemonic's in menu entries
    
    Change-Id: Ia93be72d79a1660b9c9fe17d25763aec3d8a9bba
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185660
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>

diff --git a/sw/source/uibase/utlui/bookctrl.cxx 
b/sw/source/uibase/utlui/bookctrl.cxx
index 6e453d15eb06..b5fb0fa6adb7 100644
--- a/sw/source/uibase/utlui/bookctrl.cxx
+++ b/sw/source/uibase/utlui/bookctrl.cxx
@@ -79,6 +79,11 @@ void SwBookmarkControl::Command( const CommandEvent& rCEvt )
     if (!pViewFrm)
         return;
 
+    ::tools::Rectangle aRect(rCEvt.GetMousePosPixel(), Size(1, 1));
+    weld::Window* pParent = weld::GetPopupParent(GetStatusBar(), aRect);
+    if (!pParent)
+        return;
+
     std::unique_ptr<weld::Builder> 
xBuilder(Application::CreateBuilder(nullptr, 
u"modules/swriter/ui/bookmarkmenu.ui"_ustr));
     std::unique_ptr<weld::Menu> xPopup(xBuilder->weld_menu(u"menu"_ustr));
 
@@ -92,13 +97,11 @@ void SwBookmarkControl::Command( const CommandEvent& rCEvt )
     {
         if(IDocumentMarkAccess::MarkType::BOOKMARK == 
IDocumentMarkAccess::GetType(**ppBookmark))
         {
-            xPopup->append(OUString::number(nPopupId), 
(*ppBookmark)->GetName().toString());
+            xPopup->append(OUString::number(nPopupId), 
pParent->escape_ui_str((*ppBookmark)->GetName().toString()));
             aBookmarkIdx[nPopupId] = o3tl::narrowing<sal_uInt16>(ppBookmark - 
ppBookmarkStart);
             nPopupId++;
         }
     }
-    ::tools::Rectangle aRect(rCEvt.GetMousePosPixel(), Size(1, 1));
-    weld::Window* pParent = weld::GetPopupParent(GetStatusBar(), aRect);
     OUString sResult = xPopup->popup_at_rect(pParent, aRect);
     if (!sResult.isEmpty())
     {

Reply via email to