Resolves: #i123468# Added SdrEndTextEdit before replacing EmptyPresObj...
also secured ReplaceObjectAtView to check for active TextEdit, assert this and make an emergency correction (cherry picked from commit 623cd778689bd0851652b2db00b24c308dfb657a) Conflicts: svx/source/svdraw/svdedtv.cxx Change-Id: I0e9ae1b1cd84e04c37c4de38aca7752804782384
This commit is contained in:
committed by
Caolán McNamara
parent
11f9439a1c
commit
3b729ab35b
@@ -352,6 +352,14 @@ void FuInsertOLE::DoExecute( SfxRequest& rReq )
|
||||
pPage->InsertPresObj( pOleObj, ePresObjKind );
|
||||
pOleObj->SetUserCall(pPickObj->GetUserCall());
|
||||
}
|
||||
|
||||
// #i123468# we need to end text edit before replacing the object. There cannot yet
|
||||
// being text typed (else it would not be an EmptyPresObj anymore), but it may be
|
||||
// in text edit mode
|
||||
if (mpView->IsTextEdit())
|
||||
{
|
||||
mpView->SdrEndTextEdit();
|
||||
}
|
||||
}
|
||||
|
||||
bool bRet = true;
|
||||
|
@@ -33,6 +33,7 @@
|
||||
#include "svx/svdglob.hxx"
|
||||
#include <svx/e3dsceneupdater.hxx>
|
||||
#include <rtl/strbuf.hxx>
|
||||
#include <svx/svdview.hxx>
|
||||
|
||||
// #i13033#
|
||||
#include <clonelist.hxx>
|
||||
@@ -987,6 +988,28 @@ sal_Bool SdrEditView::InsertObjectAtView(SdrObject* pObj, SdrPageView& rPV, sal_
|
||||
|
||||
void SdrEditView::ReplaceObjectAtView(SdrObject* pOldObj, SdrPageView& rPV, SdrObject* pNewObj, sal_Bool bMark)
|
||||
{
|
||||
if(IsTextEdit())
|
||||
{
|
||||
#ifdef DBG_UTIL
|
||||
if(pOldObj && dynamic_cast< SdrTextObj* >(pOldObj) && static_cast< SdrTextObj* >(pOldObj)->IsTextEditActive())
|
||||
{
|
||||
OSL_ENSURE(false, "OldObject is in TextEdit mode, this has to be ended before replacing it usnig SdrEndTextEdit (!)");
|
||||
}
|
||||
|
||||
if(pNewObj && dynamic_cast< SdrTextObj* >(pNewObj) && static_cast< SdrTextObj* >(pNewObj)->IsTextEditActive())
|
||||
{
|
||||
OSL_ENSURE(false, "NewObject is in TextEdit mode, this has to be ended before replacing it usnig SdrEndTextEdit (!)");
|
||||
}
|
||||
#endif
|
||||
|
||||
// #i123468# emergency repair situation, needs to cast up to a class derived from
|
||||
// this one; (aw080 has a mechanism for that and the view hierarchy is secured to
|
||||
// always be a SdrView)
|
||||
SdrView *pSdrView = dynamic_cast<SdrView*>(this);
|
||||
if (pSdrView)
|
||||
pSdrView->SdrEndTextEdit();
|
||||
}
|
||||
|
||||
SdrObjList* pOL=pOldObj->GetObjList();
|
||||
const bool bUndo = IsUndoEnabled();
|
||||
if( bUndo )
|
||||
|
Reference in New Issue
Block a user