summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--editeng/source/editeng/editview.cxx2
-rw-r--r--include/vcl/menu.hxx8
-rw-r--r--sw/source/uibase/uiview/viewling.cxx6
-rw-r--r--vcl/source/window/menu.cxx11
4 files changed, 20 insertions, 7 deletions
diff --git a/editeng/source/editeng/editview.cxx b/editeng/source/editeng/editview.cxx
index f6f75235fd14..bbf8bb97575c 100644
--- a/editeng/source/editeng/editview.cxx
+++ b/editeng/source/editeng/editview.cxx
@@ -983,7 +983,7 @@ void EditView::ExecuteSpellPopup( const Point& rPosPixel, Link<SpellCallbackInfo
EPaM aP = pImpEditView->pEditEngine->pImpEditEngine->CreateEPaM(aPaM);
EPaM aP2 = pImpEditView->pEditEngine->pImpEditEngine->CreateEPaM(aPaM2);
- sal_uInt16 nId = aPopupMenu->Execute( pImpEditView->GetWindow(), aTempRect, PopupMenuFlags::NoMouseUpClose );
+ sal_uInt16 nId = aPopupMenu->Execute(pImpEditView->GetWindow(), aTempRect, PopupMenuFlags::NoMouseUpClose);
aPaM2 = pImpEditView->pEditEngine->pImpEditEngine->CreateEditPaM(aP2);
aPaM = pImpEditView->pEditEngine->pImpEditEngine->CreateEditPaM(aP);
diff --git a/include/vcl/menu.hxx b/include/vcl/menu.hxx
index a16e5cccffad..023c46b781f9 100644
--- a/include/vcl/menu.hxx
+++ b/include/vcl/menu.hxx
@@ -497,6 +497,8 @@ class VCL_DLLPUBLIC PopupMenu : public Menu
private:
VclPtr<Menu>* pRefAutoSubMenu; // keeps track if a pointer to this Menu is stored in the MenuItemData
+ const vcl::ILibreOfficeKitNotifier* mpLOKNotifier; ///< To emit the LOK callbacks eg. for dialog tunneling.
+
SAL_DLLPRIVATE MenuFloatingWindow * ImplGetFloatingWindow() const;
protected:
@@ -533,6 +535,12 @@ public:
static bool IsInExecute();
static PopupMenu* GetActivePopupMenu();
+ /// Interface to register for dialog / window tunneling.
+ void SetLOKNotifier(const vcl::ILibreOfficeKitNotifier* pNotifier)
+ {
+ mpLOKNotifier = pNotifier;
+ }
+
PopupMenu& operator=( const PopupMenu& rMenu );
};
diff --git a/sw/source/uibase/uiview/viewling.cxx b/sw/source/uibase/uiview/viewling.cxx
index 9479424d67ce..8672139bc3b3 100644
--- a/sw/source/uibase/uiview/viewling.cxx
+++ b/sw/source/uibase/uiview/viewling.cxx
@@ -728,11 +728,10 @@ bool SwView::ExecSpellPopup(const Point& rPt)
aEvent.ExecutePosition.Y = aPixPos.Y();
ScopedVclPtr<Menu> pMenu;
- OUString sMenuName = bUseGrammarContext ?
+ OUString sMenuName = bUseGrammarContext ?
OUString("private:resource/GrammarContextMenu") : OUString("private:resource/SpellContextMenu");
- if(TryContextMenuInterception( *pPopup, sMenuName, pMenu, aEvent ))
+ if (TryContextMenuInterception(*pPopup, sMenuName, pMenu, aEvent))
{
-
//! happy hacking for context menu modifying extensions of this
//! 'custom made' menu... *sigh* (code copied from sfx2 and framework)
if ( pMenu )
@@ -780,6 +779,7 @@ bool SwView::ExecSpellPopup(const Point& rPt)
}
else
{
+ pPopup->SetLOKNotifier(SfxViewShell::Current());
pPopup->Execute( aToFill.SVRect(), m_pEditWin );
}
}
diff --git a/vcl/source/window/menu.cxx b/vcl/source/window/menu.cxx
index 5979104f230c..956e773a0606 100644
--- a/vcl/source/window/menu.cxx
+++ b/vcl/source/window/menu.cxx
@@ -2715,13 +2715,15 @@ MenuFloatingWindow * PopupMenu::ImplGetFloatingWindow() const {
}
PopupMenu::PopupMenu()
- : pRefAutoSubMenu(nullptr)
+ : pRefAutoSubMenu(nullptr),
+ mpLOKNotifier(nullptr)
{
mpSalMenu = ImplGetSVData()->mpDefInst->CreateMenu(false, this);
}
PopupMenu::PopupMenu( const ResId& rResId )
- : pRefAutoSubMenu(nullptr)
+ : pRefAutoSubMenu(nullptr),
+ mpLOKNotifier(nullptr)
{
mpSalMenu = ImplGetSVData()->mpDefInst->CreateMenu(false, this);
@@ -2755,7 +2757,8 @@ PopupMenu::PopupMenu( const ResId& rResId )
PopupMenu::PopupMenu( const PopupMenu& rMenu )
: Menu(),
- pRefAutoSubMenu(nullptr)
+ pRefAutoSubMenu(nullptr),
+ mpLOKNotifier(nullptr)
{
mpSalMenu = ImplGetSVData()->mpDefInst->CreateMenu(false, this);
*this = rMenu;
@@ -2969,6 +2972,8 @@ sal_uInt16 PopupMenu::ImplExecute( const VclPtr<vcl::Window>& pW, const Rectangl
}
VclPtrInstance<MenuFloatingWindow> pWin( this, pW, nStyle | WB_SYSTEMWINDOW );
+ pWin->SetLOKNotifier(mpLOKNotifier);
+
if( pSVData->maNWFData.mbFlatMenu )
pWin->SetBorderStyle( WindowBorderStyle::NOBORDER );
else