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 )
                 {


Reply via email to