Resolves: tdf#106123 store and restore the PaM around the menu Execute

because the loss of focus in the current editeng causes writer annotations to
save their contents, making the pContent of the current EditMaps invalid

Change-Id: Ic01379291fa66dd58246d33287b18801f5da49c0
This commit is contained in:
Caolán McNamara 2017-02-24 13:57:53 +00:00
parent 6017732e0b
commit 71a84b69ae

View file

@ -983,7 +983,18 @@ void EditView::ExecuteSpellPopup( const Point& rPosPixel, Link<SpellCallbackInfo
aScreenPos = pImpEditView->GetWindow()->OutputToScreenPixel( aScreenPos );
aTempRect = pImpEditView->GetWindow()->LogicToPixel( Rectangle(aScreenPos, aTempRect.GetSize() ));
//tdf#106123 store and restore the EditPaM around the menu Execute
//because the loss of focus in the current editeng causes writer
//annotations to save their contents, making the pContent of the
//current EditPams invalid
EPaM aP = pImpEditView->pEditEngine->pImpEditEngine->CreateEPaM(aPaM);
EPaM aP2 = pImpEditView->pEditEngine->pImpEditEngine->CreateEPaM(aPaM2);
sal_uInt16 nId = aPopupMenu->Execute( pImpEditView->GetWindow(), aTempRect, PopupMenuFlags::NoMouseUpClose );
aPaM2 = pImpEditView->pEditEngine->pImpEditEngine->CreateEditPaM(aP2);
aPaM = pImpEditView->pEditEngine->pImpEditEngine->CreateEditPaM(aP);
if (nId == nIgnoreId)
{
OUString aWord = pImpEditView->SpellIgnoreWord();