Author: alg
Date: Thu Aug 29 16:32:05 2013
New Revision: 1518697
URL: http://svn.apache.org/r1518697
Log:
i123003 Corrected Handle/Overlay visualization when TextEdit is active
Modified:
openoffice/trunk/main/svx/source/svdraw/svdmrkv.cxx
Modified: openoffice/trunk/main/svx/source/svdraw/svdmrkv.cxx
URL:
http://svn.apache.org/viewvc/openoffice/trunk/main/svx/source/svdraw/svdmrkv.cxx?rev=1518697&r1=1518696&r2=1518697&view=diff
==============================================================================
--- openoffice/trunk/main/svx/source/svdraw/svdmrkv.cxx (original)
+++ openoffice/trunk/main/svx/source/svdraw/svdmrkv.cxx Thu Aug 29 16:32:05 2013
@@ -718,34 +718,41 @@ void SdrMarkView::SetMarkHandles()
}
}
- // #122142# for captions in TextEdit, force to FrameHdls to get the
special text selection
- if(!bFrmHdl && pMarkedObj && bSingleTextObjMark && dynamic_cast<
SdrCaptionObj* >(pMarkedObj))
+ // check if text edit or ole is active and handles need to be
suppressed. This may be the case
+ // when a single object is selected
+ // Using a strict return statement is okay here; no handles means *no*
handles.
+ if(pMarkedObj)
{
- bFrmHdl = true;
- }
-
- if (bFrmHdl)
- {
- Rectangle aRect(GetMarkedObjRect());
+ // formally #i33755#: If TextEdit is active the EditEngine will
directly paint
+ // to the window, so suppress Overlay and handles completely; a
text frame for
+ // the active text edit will be painted by the repaitnt mechanism
in
+ // SdrObjEditView::ImpPaintOutlinerView in this case. This needs
to be reworked
+ // in the future
+ // Also formally #122142#: Pretty much the same for
SdrCaptionObj's in calc.
+ if(((SdrView*)this)->IsTextEdit())
+ {
+ const SdrTextObj* pSdrTextObj = dynamic_cast< const
SdrTextObj* >(pMarkedObj);
- // #i33755#
- const sal_Bool bHideHandlesWhenInTextEdit(
- ((SdrView*)this)->IsTextEdit()
- && pMarkedObj
- && pMarkedObj->ISA(SdrTextObj)
- && ((SdrTextObj*)pMarkedObj)->IsInEditMode());
-
- // #i118524# if inplace activated OLE is selected,
- // suppress handles
- bool bHideHandlesWhenOleActive(false);
+ if(pSdrTextObj && pSdrTextObj->IsInEditMode())
+ {
+ return;
+ }
+ }
+
+ // formally #i118524#: if inplace activated OLE is selected,
suppress handles
const SdrOle2Obj* pSdrOle2Obj = dynamic_cast< const SdrOle2Obj*
>(pMarkedObj);
if(pSdrOle2Obj && (pSdrOle2Obj->isInplaceActive() ||
pSdrOle2Obj->isUiActive()))
{
- bHideHandlesWhenOleActive = true;
+ return;
}
+ }
+
+ if (bFrmHdl)
+ {
+ Rectangle aRect(GetMarkedObjRect());
- if(!aRect.IsEmpty() && !bHideHandlesWhenInTextEdit &&
!bHideHandlesWhenOleActive)
+ if(!aRect.IsEmpty())
{ // sonst nix gefunden
if( bSingleTextObjMark )
{