LCOV - code coverage report
Current view: top level - svx/source/svdraw - svdundo.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 158 829 19.1 %
Date: 2012-08-25 Functions: 41 170 24.1 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 118 1100 10.7 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*************************************************************************
       3                 :            :  *
       4                 :            :  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       5                 :            :  *
       6                 :            :  * Copyright 2000, 2010 Oracle and/or its affiliates.
       7                 :            :  *
       8                 :            :  * OpenOffice.org - a multi-platform office productivity suite
       9                 :            :  *
      10                 :            :  * This file is part of OpenOffice.org.
      11                 :            :  *
      12                 :            :  * OpenOffice.org is free software: you can redistribute it and/or modify
      13                 :            :  * it under the terms of the GNU Lesser General Public License version 3
      14                 :            :  * only, as published by the Free Software Foundation.
      15                 :            :  *
      16                 :            :  * OpenOffice.org is distributed in the hope that it will be useful,
      17                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      18                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      19                 :            :  * GNU Lesser General Public License version 3 for more details
      20                 :            :  * (a copy is included in the LICENSE file that accompanied this code).
      21                 :            :  *
      22                 :            :  * You should have received a copy of the GNU Lesser General Public License
      23                 :            :  * version 3 along with OpenOffice.org.  If not, see
      24                 :            :  * <http://www.openoffice.org/license.html>
      25                 :            :  * for a copy of the LGPLv3 License.
      26                 :            :  *
      27                 :            :  ************************************************************************/
      28                 :            : 
      29                 :            : 
      30                 :            : #include <svx/svdundo.hxx>
      31                 :            : #include "svx/svditext.hxx"
      32                 :            : #include <svx/svdotext.hxx>
      33                 :            : #include <svx/svdobj.hxx>
      34                 :            : #include <svx/svdpage.hxx>
      35                 :            : #include <svx/svdlayer.hxx>
      36                 :            : #include <svx/svdmodel.hxx>
      37                 :            : #include <svx/svdview.hxx>
      38                 :            : #include "svx/svdstr.hrc"   // names taken from the resource
      39                 :            : #include "svx/svdglob.hxx"  // StringCache
      40                 :            : #include <svx/scene3d.hxx>
      41                 :            : #include <editeng/outlobj.hxx>
      42                 :            : #include <svx/svdogrp.hxx>
      43                 :            : #include <svx/sdr/properties/itemsettools.hxx>
      44                 :            : #include <svx/sdr/properties/properties.hxx>
      45                 :            : #include <svx/svdocapt.hxx>
      46                 :            : #include <svl/whiter.hxx>
      47                 :            : #include <svx/e3dsceneupdater.hxx>
      48                 :            : 
      49                 :            : #include "svx/svdviter.hxx"
      50                 :            : 
      51                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
      52                 :            : 
      53                 :            : // iterates over all views and unmarks this SdrObject if it is marked
      54                 :          0 : static void ImplUnmarkObject( SdrObject* pObj )
      55                 :            : {
      56         [ #  # ]:          0 :     SdrViewIter aIter( pObj );
      57 [ #  # ][ #  # ]:          0 :     for ( SdrView* pView = aIter.FirstView(); pView; pView = aIter.NextView() )
                 [ #  # ]
      58                 :            :     {
      59         [ #  # ]:          0 :         pView->MarkObj( pObj, pView->GetSdrPageView(), sal_True );
      60                 :            :     }
      61                 :          0 : }
      62                 :            : 
      63                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
      64                 :            : 
      65 [ #  # ][ #  # ]:          0 : TYPEINIT1(SdrUndoAction,SfxUndoAction);
      66                 :            : 
      67                 :         18 : sal_Bool SdrUndoAction::CanRepeat(SfxRepeatTarget& rView) const
      68                 :            : {
      69 [ +  - ][ -  + ]:         18 :     SdrView* pV=PTR_CAST(SdrView,&rView);
      70         [ -  + ]:         18 :     if (pV!=NULL) return CanSdrRepeat(*pV);
      71                 :         18 :     return sal_False;
      72                 :            : }
      73                 :            : 
      74                 :          0 : void SdrUndoAction::Repeat(SfxRepeatTarget& rView)
      75                 :            : {
      76 [ #  # ][ #  # ]:          0 :     SdrView* pV=PTR_CAST(SdrView,&rView);
      77         [ #  # ]:          0 :     if (pV!=NULL) SdrRepeat(*pV);
      78                 :            :     DBG_ASSERT(pV!=NULL,"Repeat: SfxRepeatTarget that was handed over is not a SdrView");
      79                 :          0 : }
      80                 :            : 
      81                 :          0 : XubString SdrUndoAction::GetRepeatComment(SfxRepeatTarget& rView) const
      82                 :            : {
      83 [ #  # ][ #  # ]:          0 :     SdrView* pV=PTR_CAST(SdrView,&rView);
      84         [ #  # ]:          0 :     if (pV!=NULL) return GetSdrRepeatComment(*pV);
      85                 :          0 :     return String();
      86                 :            : }
      87                 :            : 
      88                 :          0 : bool SdrUndoAction::CanSdrRepeat(SdrView& /*rView*/) const
      89                 :            : {
      90                 :          0 :     return sal_False;
      91                 :            : }
      92                 :            : 
      93                 :          0 : void SdrUndoAction::SdrRepeat(SdrView& /*rView*/)
      94                 :            : {
      95                 :          0 : }
      96                 :            : 
      97                 :          0 : XubString SdrUndoAction::GetSdrRepeatComment(SdrView& /*rView*/) const
      98                 :            : {
      99                 :          0 :     return String();
     100                 :            : }
     101                 :            : 
     102                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     103                 :            : 
     104                 :        381 : SdrUndoGroup::SdrUndoGroup(SdrModel& rNewMod)
     105                 :            : :   SdrUndoAction(rNewMod),
     106                 :            :     aBuf(),
     107 [ +  - ][ +  - ]:        381 :     eFunction(SDRREPFUNC_OBJ_NONE)
                 [ +  - ]
     108                 :        381 : {}
     109                 :            : 
     110 [ +  - ][ +  - ]:        381 : SdrUndoGroup::~SdrUndoGroup()
     111                 :            : {
     112         [ +  - ]:        381 :     Clear();
     113         [ -  + ]:        762 : }
     114                 :            : 
     115                 :        381 : void SdrUndoGroup::Clear()
     116                 :            : {
     117         [ +  + ]:        806 :     for (sal_uIntPtr nu=0; nu<GetActionCount(); nu++) {
     118                 :        425 :         SdrUndoAction* pAct=GetAction(nu);
     119         [ +  - ]:        425 :         delete pAct;
     120                 :            :     }
     121                 :        381 :     aBuf.clear();
     122                 :        381 : }
     123                 :            : 
     124                 :        425 : void SdrUndoGroup::AddAction(SdrUndoAction* pAct)
     125                 :            : {
     126                 :        425 :     aBuf.push_back(pAct);
     127                 :        425 : }
     128                 :            : 
     129                 :          0 : void SdrUndoGroup::Undo()
     130                 :            : {
     131         [ #  # ]:          0 :     for (sal_uIntPtr nu=GetActionCount(); nu>0;) {
     132                 :          0 :         nu--;
     133                 :          0 :         SdrUndoAction* pAct=GetAction(nu);
     134                 :          0 :         pAct->Undo();
     135                 :            :     }
     136                 :          0 : }
     137                 :            : 
     138                 :          0 : void SdrUndoGroup::Redo()
     139                 :            : {
     140         [ #  # ]:          0 :     for (sal_uIntPtr nu=0; nu<GetActionCount(); nu++) {
     141                 :          0 :         SdrUndoAction* pAct=GetAction(nu);
     142                 :          0 :         pAct->Redo();
     143                 :            :     }
     144                 :          0 : }
     145                 :            : 
     146                 :        260 : rtl::OUString SdrUndoGroup::GetComment() const
     147                 :            : {
     148         [ +  - ]:        260 :     XubString aRet(aComment);
     149                 :            : 
     150         [ +  - ]:        260 :     String aSearchString(RTL_CONSTASCII_USTRINGPARAM("%1"));
     151                 :            : 
     152         [ +  - ]:        260 :     aRet.SearchAndReplace(aSearchString, aObjDescription);
     153                 :            : 
     154 [ +  - ][ +  - ]:        260 :     return aRet;
                 [ +  - ]
     155                 :            : }
     156                 :            : 
     157                 :          0 : bool SdrUndoGroup::CanSdrRepeat(SdrView& rView) const
     158                 :            : {
     159   [ #  #  #  #  :          0 :     switch (eFunction) {
          #  #  #  #  #  
          #  #  #  #  #  
                #  #  # ]
     160                 :          0 :         case SDRREPFUNC_OBJ_NONE            :  return sal_False;
     161                 :          0 :         case SDRREPFUNC_OBJ_DELETE          :  return rView.AreObjectsMarked();
     162                 :          0 :         case SDRREPFUNC_OBJ_COMBINE_POLYPOLY:  return rView.IsCombinePossible(sal_False);
     163                 :          0 :         case SDRREPFUNC_OBJ_COMBINE_ONEPOLY :  return rView.IsCombinePossible(sal_True);
     164                 :          0 :         case SDRREPFUNC_OBJ_DISMANTLE_POLYS :  return rView.IsDismantlePossible(sal_False);
     165                 :          0 :         case SDRREPFUNC_OBJ_DISMANTLE_LINES :  return rView.IsDismantlePossible(sal_True);
     166                 :          0 :         case SDRREPFUNC_OBJ_CONVERTTOPOLY   :  return rView.IsConvertToPolyObjPossible(sal_False);
     167                 :          0 :         case SDRREPFUNC_OBJ_CONVERTTOPATH   :  return rView.IsConvertToPathObjPossible(sal_False);
     168                 :          0 :         case SDRREPFUNC_OBJ_GROUP           :  return rView.IsGroupPossible();
     169                 :          0 :         case SDRREPFUNC_OBJ_UNGROUP         :  return rView.IsUnGroupPossible();
     170                 :          0 :         case SDRREPFUNC_OBJ_PUTTOTOP        :  return rView.IsToTopPossible();
     171                 :          0 :         case SDRREPFUNC_OBJ_PUTTOBTM        :  return rView.IsToBtmPossible();
     172                 :          0 :         case SDRREPFUNC_OBJ_MOVTOTOP        :  return rView.IsToTopPossible();
     173                 :          0 :         case SDRREPFUNC_OBJ_MOVTOBTM        :  return rView.IsToBtmPossible();
     174                 :          0 :         case SDRREPFUNC_OBJ_REVORDER        :  return rView.IsReverseOrderPossible();
     175                 :          0 :         case SDRREPFUNC_OBJ_IMPORTMTF       :  return rView.IsImportMtfPossible();
     176                 :          0 :         default: break;
     177                 :            :     } // switch
     178                 :          0 :     return sal_False;
     179                 :            : }
     180                 :            : 
     181                 :          0 : void SdrUndoGroup::SdrRepeat(SdrView& rView)
     182                 :            : {
     183   [ #  #  #  #  :          0 :     switch (eFunction) {
          #  #  #  #  #  
          #  #  #  #  #  
                #  #  # ]
     184                 :          0 :         case SDRREPFUNC_OBJ_NONE            :  break;
     185                 :          0 :         case SDRREPFUNC_OBJ_DELETE          :  rView.DeleteMarked();                break;
     186                 :          0 :         case SDRREPFUNC_OBJ_COMBINE_POLYPOLY:  rView.CombineMarkedObjects(sal_False);   break;
     187                 :          0 :         case SDRREPFUNC_OBJ_COMBINE_ONEPOLY :  rView.CombineMarkedObjects(sal_True);    break;
     188                 :          0 :         case SDRREPFUNC_OBJ_DISMANTLE_POLYS :  rView.DismantleMarkedObjects(sal_False); break;
     189                 :          0 :         case SDRREPFUNC_OBJ_DISMANTLE_LINES :  rView.DismantleMarkedObjects(sal_True);  break;
     190                 :          0 :         case SDRREPFUNC_OBJ_CONVERTTOPOLY   :  rView.ConvertMarkedToPolyObj(sal_False); break;
     191                 :          0 :         case SDRREPFUNC_OBJ_CONVERTTOPATH   :  rView.ConvertMarkedToPathObj(sal_False); break;
     192                 :          0 :         case SDRREPFUNC_OBJ_GROUP           :  rView.GroupMarked();                 break;
     193                 :          0 :         case SDRREPFUNC_OBJ_UNGROUP         :  rView.UnGroupMarked();               break;
     194                 :          0 :         case SDRREPFUNC_OBJ_PUTTOTOP        :  rView.PutMarkedToTop();              break;
     195                 :          0 :         case SDRREPFUNC_OBJ_PUTTOBTM        :  rView.PutMarkedToBtm();              break;
     196                 :          0 :         case SDRREPFUNC_OBJ_MOVTOTOP        :  rView.MovMarkedToTop();              break;
     197                 :          0 :         case SDRREPFUNC_OBJ_MOVTOBTM        :  rView.MovMarkedToBtm();              break;
     198                 :          0 :         case SDRREPFUNC_OBJ_REVORDER        :  rView.ReverseOrderOfMarked();        break;
     199                 :          0 :         case SDRREPFUNC_OBJ_IMPORTMTF       :  rView.DoImportMarkedMtf();           break;
     200                 :          0 :         default: break;
     201                 :            :     } // switch
     202                 :          0 : }
     203                 :            : 
     204                 :          0 : XubString SdrUndoGroup::GetSdrRepeatComment(SdrView& /*rView*/) const
     205                 :            : {
     206         [ #  # ]:          0 :     XubString aRet(aComment);
     207                 :            : 
     208         [ #  # ]:          0 :     String aSearchString(RTL_CONSTASCII_USTRINGPARAM("%1"));
     209                 :            : 
     210 [ #  # ][ #  # ]:          0 :     aRet.SearchAndReplace(aSearchString, ImpGetResStr(STR_ObjNameSingulPlural));
                 [ #  # ]
     211                 :            : 
     212         [ #  # ]:          0 :     return aRet;
     213                 :            : }
     214                 :            : 
     215                 :        553 : SdrUndoObj::SdrUndoObj(SdrObject& rNewObj):
     216                 :        553 :     SdrUndoAction(*rNewObj.GetModel()),
     217                 :        553 :     pObj(&rNewObj)
     218                 :            : {
     219                 :        553 : }
     220                 :            : 
     221                 :       1226 : void SdrUndoObj::GetDescriptionStringForObject( const SdrObject& _rForObject, sal_uInt16 nStrCacheID, String& rStr, bool bRepeat )
     222                 :            : {
     223 [ +  - ][ +  - ]:       1226 :     rStr = ImpGetResStr(nStrCacheID);
                 [ +  - ]
     224                 :            : 
     225         [ +  - ]:       1226 :     String aSearchString(RTL_CONSTASCII_USTRINGPARAM("%1"));
     226                 :            : 
     227         [ +  - ]:       1226 :     xub_StrLen nPos = rStr.Search(aSearchString);
     228                 :            : 
     229         [ +  - ]:       1226 :     if(nPos != STRING_NOTFOUND)
     230                 :            :     {
     231         [ +  - ]:       1226 :         rStr.Erase(nPos, 2);
     232                 :            : 
     233         [ -  + ]:       1226 :         if(bRepeat)
     234                 :            :         {
     235 [ #  # ][ #  # ]:          0 :             rStr.Insert(ImpGetResStr(STR_ObjNameSingulPlural), nPos);
                 [ #  # ]
     236                 :            :         }
     237                 :            :         else
     238                 :            :         {
     239         [ +  - ]:       1226 :             XubString aStr;
     240                 :            : 
     241         [ +  - ]:       1226 :             _rForObject.TakeObjNameSingul(aStr);
     242 [ +  - ][ +  - ]:       1226 :             rStr.Insert(aStr, nPos);
     243                 :            :         }
     244         [ +  - ]:       1226 :     }
     245                 :       1226 : }
     246                 :            : 
     247                 :        446 : void SdrUndoObj::ImpTakeDescriptionStr(sal_uInt16 nStrCacheID, XubString& rStr, bool bRepeat) const
     248                 :            : {
     249         [ +  - ]:        446 :     if ( pObj )
     250                 :        446 :         GetDescriptionStringForObject( *pObj, nStrCacheID, rStr, bRepeat );
     251                 :        446 : }
     252                 :            : 
     253                 :            : // common call method for possible change of the page when UNDO/REDO is triggered
     254                 :          0 : void SdrUndoObj::ImpShowPageOfThisObject()
     255                 :            : {
     256 [ #  # ][ #  # ]:          0 :     if(pObj && pObj->IsInserted() && pObj->GetPage() && pObj->GetModel())
         [ #  # ][ #  # ]
                 [ #  # ]
     257                 :            :     {
     258         [ #  # ]:          0 :         SdrHint aHint(HINT_SWITCHTOPAGE);
     259                 :            : 
     260         [ #  # ]:          0 :         aHint.SetObject(pObj);
     261 [ #  # ][ #  # ]:          0 :         aHint.SetPage(pObj->GetPage());
     262                 :            : 
     263 [ #  # ][ #  # ]:          0 :         pObj->GetModel()->Broadcast(aHint);
                 [ #  # ]
     264                 :            :     }
     265                 :          0 : }
     266                 :            : 
     267                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     268                 :            : 
     269                 :          0 : SdrUndoAttrObj::SdrUndoAttrObj(SdrObject& rNewObj, bool bStyleSheet1, bool bSaveText)
     270                 :            : :   SdrUndoObj(rNewObj),
     271                 :            :     pUndoSet(NULL),
     272                 :            :     pRedoSet(NULL),
     273                 :            :     pRepeatSet(NULL),
     274                 :            :     pUndoStyleSheet(NULL),
     275                 :            :     pRedoStyleSheet(NULL),
     276                 :            :     pRepeatStyleSheet(NULL),
     277                 :            :     bHaveToTakeRedoSet(sal_True),
     278                 :            :     pTextUndo(NULL),
     279                 :            : 
     280                 :            :     // #i8508#
     281                 :            :     pTextRedo(NULL),
     282                 :            : 
     283                 :          0 :     pUndoGroup(NULL)
     284                 :            : {
     285                 :          0 :     bStyleSheet = bStyleSheet1;
     286                 :            : 
     287         [ #  # ]:          0 :     SdrObjList* pOL = rNewObj.GetSubList();
     288 [ #  # ][ #  # ]:          0 :     sal_Bool bIsGroup(pOL!=NULL && pOL->GetObjCount());
                 [ #  # ]
     289 [ #  # ][ #  # ]:          0 :     sal_Bool bIs3DScene(bIsGroup && pObj->ISA(E3dScene));
         [ #  # ][ #  # ]
     290                 :            : 
     291         [ #  # ]:          0 :     if(bIsGroup)
     292                 :            :     {
     293                 :            :         // it's a group object!
     294 [ #  # ][ #  # ]:          0 :         pUndoGroup = new SdrUndoGroup(*pObj->GetModel());
                 [ #  # ]
     295         [ #  # ]:          0 :         sal_uInt32 nObjAnz(pOL->GetObjCount());
     296                 :            : 
     297         [ #  # ]:          0 :         for(sal_uInt32 nObjNum(0); nObjNum < nObjAnz; nObjNum++)
     298                 :            :         {
     299                 :            :             pUndoGroup->AddAction(
     300 [ #  # ][ #  # ]:          0 :                 new SdrUndoAttrObj(*pOL->GetObj(nObjNum), bStyleSheet1));
         [ #  # ][ #  # ]
     301                 :            :         }
     302                 :            :     }
     303                 :            : 
     304 [ #  # ][ #  # ]:          0 :     if(!bIsGroup || bIs3DScene)
     305                 :            :     {
     306 [ #  # ][ #  # ]:          0 :         pUndoSet = new SfxItemSet(pObj->GetMergedItemSet());
                 [ #  # ]
     307                 :            : 
     308         [ #  # ]:          0 :         if(bStyleSheet)
     309         [ #  # ]:          0 :             pUndoStyleSheet = pObj->GetStyleSheet();
     310                 :            : 
     311         [ #  # ]:          0 :         if(bSaveText)
     312                 :            :         {
     313         [ #  # ]:          0 :             pTextUndo = pObj->GetOutlinerParaObject();
     314         [ #  # ]:          0 :             if(pTextUndo)
     315 [ #  # ][ #  # ]:          0 :                 pTextUndo = new OutlinerParaObject(*pTextUndo);
     316                 :            :         }
     317                 :            :     }
     318                 :          0 : }
     319                 :            : 
     320                 :          0 : SdrUndoAttrObj::~SdrUndoAttrObj()
     321                 :            : {
     322         [ #  # ]:          0 :     if(pUndoSet)
     323 [ #  # ][ #  # ]:          0 :         delete pUndoSet;
     324         [ #  # ]:          0 :     if(pRedoSet)
     325 [ #  # ][ #  # ]:          0 :         delete pRedoSet;
     326         [ #  # ]:          0 :     if(pRepeatSet)
     327 [ #  # ][ #  # ]:          0 :         delete pRepeatSet;
     328         [ #  # ]:          0 :     if(pUndoGroup)
     329 [ #  # ][ #  # ]:          0 :         delete pUndoGroup;
     330         [ #  # ]:          0 :     if(pTextUndo)
     331 [ #  # ][ #  # ]:          0 :         delete pTextUndo;
     332                 :            : 
     333                 :            :     // #i8508#
     334         [ #  # ]:          0 :     if(pTextRedo)
     335 [ #  # ][ #  # ]:          0 :         delete pTextRedo;
     336         [ #  # ]:          0 : }
     337                 :            : 
     338                 :          0 : void SdrUndoAttrObj::Undo()
     339                 :            : {
     340         [ #  # ]:          0 :     E3DModifySceneSnapRectUpdater aUpdater(pObj);
     341 [ #  # ][ #  # ]:          0 :     sal_Bool bIs3DScene(pObj && pObj->ISA(E3dScene));
         [ #  # ][ #  # ]
     342                 :            : 
     343                 :            :     // Trigger PageChangeCall
     344         [ #  # ]:          0 :     ImpShowPageOfThisObject();
     345                 :            : 
     346 [ #  # ][ #  # ]:          0 :     if(!pUndoGroup || bIs3DScene)
     347                 :            :     {
     348         [ #  # ]:          0 :         if(bHaveToTakeRedoSet)
     349                 :            :         {
     350                 :          0 :             bHaveToTakeRedoSet = sal_False;
     351                 :            : 
     352         [ #  # ]:          0 :             if(pRedoSet)
     353                 :            :             {
     354 [ #  # ][ #  # ]:          0 :                 delete pRedoSet;
     355                 :            :             }
     356                 :            : 
     357 [ #  # ][ #  # ]:          0 :             pRedoSet = new SfxItemSet(pObj->GetMergedItemSet());
                 [ #  # ]
     358                 :            : 
     359         [ #  # ]:          0 :             if(bStyleSheet)
     360         [ #  # ]:          0 :                 pRedoStyleSheet=pObj->GetStyleSheet();
     361                 :            : 
     362         [ #  # ]:          0 :             if(pTextUndo)
     363                 :            :             {
     364                 :            :                 // #i8508#
     365         [ #  # ]:          0 :                 pTextRedo = pObj->GetOutlinerParaObject();
     366                 :            : 
     367         [ #  # ]:          0 :                 if(pTextRedo)
     368 [ #  # ][ #  # ]:          0 :                     pTextRedo = new OutlinerParaObject(*pTextRedo);
     369                 :            :             }
     370                 :            :         }
     371                 :            : 
     372         [ #  # ]:          0 :         if(bStyleSheet)
     373                 :            :         {
     374         [ #  # ]:          0 :             pRedoStyleSheet = pObj->GetStyleSheet();
     375         [ #  # ]:          0 :             pObj->SetStyleSheet(pUndoStyleSheet, sal_True);
     376                 :            :         }
     377                 :            : 
     378         [ #  # ]:          0 :         sdr::properties::ItemChangeBroadcaster aItemChange(*pObj);
     379                 :            : 
     380                 :            :         // Since ClearItem sets back everything to normal
     381                 :            :         // it also sets fit-to-size text to non-fit-to-size text and
     382                 :            :         // switches on autogrowheight (the default). That may lead to
     383                 :            :         // loosing the geometry size info for the object when it is
     384                 :            :         // laid out again from AdjustTextFrameWidthAndHeight(). This makes
     385                 :            :         // rescuing the size of the object necessary.
     386         [ #  # ]:          0 :         const Rectangle aSnapRect = pObj->GetSnapRect();
     387                 :            : 
     388         [ #  # ]:          0 :         if(pUndoSet)
     389                 :            :         {
     390 [ #  # ][ #  # ]:          0 :             if(pObj->ISA(SdrCaptionObj))
                 [ #  # ]
     391                 :            :             {
     392                 :            :                 // do a more smooth item deletion here, else the text
     393                 :            :                 // rect will be reformatted, especially when information regarding
     394                 :            :                 // vertical text is changed. When clearing only set items it's
     395                 :            :                 // slower, but safer regarding such information (it's not changed
     396                 :            :                 // usually)
     397         [ #  # ]:          0 :                 SfxWhichIter aIter(*pUndoSet);
     398         [ #  # ]:          0 :                 sal_uInt16 nWhich(aIter.FirstWhich());
     399                 :            : 
     400         [ #  # ]:          0 :                 while(nWhich)
     401                 :            :                 {
     402 [ #  # ][ #  # ]:          0 :                     if(SFX_ITEM_SET != pUndoSet->GetItemState(nWhich, sal_False))
     403                 :            :                     {
     404         [ #  # ]:          0 :                         pObj->ClearMergedItem(nWhich);
     405                 :            :                     }
     406                 :            : 
     407         [ #  # ]:          0 :                     nWhich = aIter.NextWhich();
     408         [ #  # ]:          0 :                 }
     409                 :            :             }
     410                 :            :             else
     411                 :            :             {
     412         [ #  # ]:          0 :                 pObj->ClearMergedItem();
     413                 :            :             }
     414                 :            : 
     415         [ #  # ]:          0 :             pObj->SetMergedItemSet(*pUndoSet);
     416                 :            :         }
     417                 :            : 
     418                 :            :         // Restore previous size here when it was changed.
     419 [ #  # ][ #  # ]:          0 :         if(aSnapRect != pObj->GetSnapRect())
                 [ #  # ]
     420                 :            :         {
     421         [ #  # ]:          0 :             pObj->NbcSetSnapRect(aSnapRect);
     422                 :            :         }
     423                 :            : 
     424 [ #  # ][ #  # ]:          0 :         pObj->GetProperties().BroadcastItemChange(aItemChange);
     425                 :            : 
     426         [ #  # ]:          0 :         if(pTextUndo)
     427                 :            :         {
     428 [ #  # ][ #  # ]:          0 :             pObj->SetOutlinerParaObject(new OutlinerParaObject(*pTextUndo));
                 [ #  # ]
     429         [ #  # ]:          0 :         }
     430                 :            :     }
     431                 :            : 
     432         [ #  # ]:          0 :     if(pUndoGroup)
     433                 :            :     {
     434         [ #  # ]:          0 :         pUndoGroup->Undo();
     435         [ #  # ]:          0 :     }
     436                 :          0 : }
     437                 :            : 
     438                 :          0 : void SdrUndoAttrObj::Redo()
     439                 :            : {
     440         [ #  # ]:          0 :     E3DModifySceneSnapRectUpdater aUpdater(pObj);
     441 [ #  # ][ #  # ]:          0 :     sal_Bool bIs3DScene(pObj && pObj->ISA(E3dScene));
         [ #  # ][ #  # ]
     442                 :            : 
     443 [ #  # ][ #  # ]:          0 :     if(!pUndoGroup || bIs3DScene)
     444                 :            :     {
     445         [ #  # ]:          0 :         if(bStyleSheet)
     446                 :            :         {
     447         [ #  # ]:          0 :             pUndoStyleSheet = pObj->GetStyleSheet();
     448         [ #  # ]:          0 :             pObj->SetStyleSheet(pRedoStyleSheet, sal_True);
     449                 :            :         }
     450                 :            : 
     451         [ #  # ]:          0 :         sdr::properties::ItemChangeBroadcaster aItemChange(*pObj);
     452                 :            : 
     453         [ #  # ]:          0 :         const Rectangle aSnapRect = pObj->GetSnapRect();
     454                 :            : 
     455         [ #  # ]:          0 :         if(pRedoSet)
     456                 :            :         {
     457 [ #  # ][ #  # ]:          0 :             if(pObj->ISA(SdrCaptionObj))
                 [ #  # ]
     458                 :            :             {
     459                 :            :                 // do a more smooth item deletion here, else the text
     460                 :            :                 // rect will be reformatted, especially when information regarding
     461                 :            :                 // vertical text is changed. When clearing only set items it's
     462                 :            :                 // slower, but safer regarding such information (it's not changed
     463                 :            :                 // usually)
     464         [ #  # ]:          0 :                 SfxWhichIter aIter(*pRedoSet);
     465         [ #  # ]:          0 :                 sal_uInt16 nWhich(aIter.FirstWhich());
     466                 :            : 
     467         [ #  # ]:          0 :                 while(nWhich)
     468                 :            :                 {
     469 [ #  # ][ #  # ]:          0 :                     if(SFX_ITEM_SET != pRedoSet->GetItemState(nWhich, sal_False))
     470                 :            :                     {
     471         [ #  # ]:          0 :                         pObj->ClearMergedItem(nWhich);
     472                 :            :                     }
     473                 :            : 
     474         [ #  # ]:          0 :                     nWhich = aIter.NextWhich();
     475         [ #  # ]:          0 :                 }
     476                 :            :             }
     477                 :            :             else
     478                 :            :             {
     479         [ #  # ]:          0 :                 pObj->ClearMergedItem();
     480                 :            :             }
     481                 :            : 
     482         [ #  # ]:          0 :             pObj->SetMergedItemSet(*pRedoSet);
     483                 :            :         }
     484                 :            : 
     485                 :            :         // Restore previous size here when it was changed.
     486 [ #  # ][ #  # ]:          0 :         if(aSnapRect != pObj->GetSnapRect())
                 [ #  # ]
     487                 :            :         {
     488         [ #  # ]:          0 :             pObj->NbcSetSnapRect(aSnapRect);
     489                 :            :         }
     490                 :            : 
     491 [ #  # ][ #  # ]:          0 :         pObj->GetProperties().BroadcastItemChange(aItemChange);
     492                 :            : 
     493                 :            :         // #i8508#
     494         [ #  # ]:          0 :         if(pTextRedo)
     495                 :            :         {
     496 [ #  # ][ #  # ]:          0 :             pObj->SetOutlinerParaObject(new OutlinerParaObject(*pTextRedo));
                 [ #  # ]
     497         [ #  # ]:          0 :         }
     498                 :            :     }
     499                 :            : 
     500         [ #  # ]:          0 :     if(pUndoGroup)
     501                 :            :     {
     502         [ #  # ]:          0 :         pUndoGroup->Redo();
     503                 :            :     }
     504                 :            : 
     505                 :            :     // Trigger PageChangeCall
     506 [ #  # ][ #  # ]:          0 :     ImpShowPageOfThisObject();
     507                 :          0 : }
     508                 :            : 
     509                 :          0 : rtl::OUString SdrUndoAttrObj::GetComment() const
     510                 :            : {
     511         [ #  # ]:          0 :     XubString aStr;
     512                 :            : 
     513         [ #  # ]:          0 :     if(bStyleSheet)
     514                 :            :     {
     515         [ #  # ]:          0 :         ImpTakeDescriptionStr(STR_EditSetStylesheet, aStr);
     516                 :            :     }
     517                 :            :     else
     518                 :            :     {
     519         [ #  # ]:          0 :         ImpTakeDescriptionStr(STR_EditSetAttributes, aStr);
     520                 :            :     }
     521                 :            : 
     522 [ #  # ][ #  # ]:          0 :     return aStr;
     523                 :            : }
     524                 :            : 
     525                 :          0 : void SdrUndoAttrObj::SdrRepeat(SdrView& rView)
     526                 :            : {
     527         [ #  # ]:          0 :     if(pRepeatSet)
     528                 :            :     {
     529                 :          0 :         rView.SetAttrToMarked(*pRepeatSet, sal_False);
     530                 :            :     }
     531                 :          0 : }
     532                 :            : 
     533                 :          0 : bool SdrUndoAttrObj::CanSdrRepeat(SdrView& rView) const
     534                 :            : {
     535 [ #  # ][ #  # ]:          0 :     return (pRepeatSet!=0L && rView.AreObjectsMarked());
     536                 :            : }
     537                 :            : 
     538                 :          0 : XubString SdrUndoAttrObj::GetSdrRepeatComment(SdrView& /*rView*/) const
     539                 :            : {
     540                 :          0 :     XubString aStr;
     541                 :            : 
     542         [ #  # ]:          0 :     if(bStyleSheet)
     543                 :            :     {
     544         [ #  # ]:          0 :         ImpTakeDescriptionStr(STR_EditSetStylesheet, aStr, sal_True);
     545                 :            :     }
     546                 :            :     else
     547                 :            :     {
     548         [ #  # ]:          0 :         ImpTakeDescriptionStr(STR_EditSetAttributes, aStr, sal_True);
     549                 :            :     }
     550                 :            : 
     551                 :          0 :     return aStr;
     552                 :            : }
     553                 :            : 
     554                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     555                 :            : 
     556                 :          0 : void SdrUndoMoveObj::Undo()
     557                 :            : {
     558                 :            :     // Trigger PageChangeCall
     559                 :          0 :     ImpShowPageOfThisObject();
     560                 :            : 
     561         [ #  # ]:          0 :     pObj->Move(Size(-aDistance.Width(),-aDistance.Height()));
     562                 :          0 : }
     563                 :            : 
     564                 :          0 : void SdrUndoMoveObj::Redo()
     565                 :            : {
     566         [ #  # ]:          0 :     pObj->Move(Size(aDistance.Width(),aDistance.Height()));
     567                 :            : 
     568                 :            :     // Trigger PageChangeCall
     569                 :          0 :     ImpShowPageOfThisObject();
     570                 :          0 : }
     571                 :            : 
     572                 :          0 : rtl::OUString SdrUndoMoveObj::GetComment() const
     573                 :            : {
     574         [ #  # ]:          0 :     XubString aStr;
     575         [ #  # ]:          0 :     ImpTakeDescriptionStr(STR_EditMove,aStr);
     576 [ #  # ][ #  # ]:          0 :     return aStr;
     577                 :            : }
     578                 :            : 
     579                 :          0 : void SdrUndoMoveObj::SdrRepeat(SdrView& rView)
     580                 :            : {
     581                 :          0 :     rView.MoveMarkedObj(aDistance);
     582                 :          0 : }
     583                 :            : 
     584                 :          0 : bool SdrUndoMoveObj::CanSdrRepeat(SdrView& rView) const
     585                 :            : {
     586                 :          0 :     return rView.AreObjectsMarked();
     587                 :            : }
     588                 :            : 
     589                 :          0 : XubString SdrUndoMoveObj::GetSdrRepeatComment(SdrView& /*rView*/) const
     590                 :            : {
     591                 :          0 :     XubString aStr;
     592         [ #  # ]:          0 :     ImpTakeDescriptionStr(STR_EditMove,aStr,sal_True);
     593                 :          0 :     return aStr;
     594                 :            : }
     595                 :            : 
     596                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     597                 :            : 
     598                 :          0 : SdrUndoGeoObj::SdrUndoGeoObj(SdrObject& rNewObj):
     599                 :            :     SdrUndoObj(rNewObj),
     600                 :            :     pUndoGeo(NULL),
     601                 :            :     pRedoGeo(NULL),
     602                 :          0 :     pUndoGroup(NULL)
     603                 :            : {
     604         [ #  # ]:          0 :     SdrObjList* pOL=rNewObj.GetSubList();
     605 [ #  # ][ #  # ]:          0 :     if (pOL!=NULL && pOL->GetObjCount() && !rNewObj.ISA(E3dScene))
         [ #  # ][ #  # ]
         [ #  # ][ #  # ]
                 [ #  # ]
     606                 :            :     {
     607                 :            :         // this is a group object!
     608                 :            :         // If this were 3D scene, we'd only add an Undo for the scene itself
     609                 :            :         // (which we do elsewhere).
     610 [ #  # ][ #  # ]:          0 :         pUndoGroup=new SdrUndoGroup(*pObj->GetModel());
                 [ #  # ]
     611         [ #  # ]:          0 :         sal_uIntPtr nObjAnz=pOL->GetObjCount();
     612         [ #  # ]:          0 :         for (sal_uIntPtr nObjNum=0; nObjNum<nObjAnz; nObjNum++) {
     613 [ #  # ][ #  # ]:          0 :             pUndoGroup->AddAction(new SdrUndoGeoObj(*pOL->GetObj(nObjNum)));
         [ #  # ][ #  # ]
     614                 :            :         }
     615                 :            :     } else {
     616         [ #  # ]:          0 :         pUndoGeo=pObj->GetGeoData();
     617                 :            :     }
     618                 :          0 : }
     619                 :            : 
     620                 :          0 : SdrUndoGeoObj::~SdrUndoGeoObj()
     621                 :            : {
     622 [ #  # ][ #  # ]:          0 :     if (pUndoGeo!=NULL) delete pUndoGeo;
                 [ #  # ]
     623 [ #  # ][ #  # ]:          0 :     if (pRedoGeo!=NULL) delete pRedoGeo;
                 [ #  # ]
     624 [ #  # ][ #  # ]:          0 :     if (pUndoGroup!=NULL) delete pUndoGroup;
                 [ #  # ]
     625         [ #  # ]:          0 : }
     626                 :            : 
     627                 :          0 : void SdrUndoGeoObj::Undo()
     628                 :            : {
     629                 :            :     // Trigger PageChangeCall
     630                 :          0 :     ImpShowPageOfThisObject();
     631                 :            : 
     632         [ #  # ]:          0 :     if(pUndoGroup)
     633                 :            :     {
     634                 :          0 :         pUndoGroup->Undo();
     635                 :            : 
     636                 :            :         // only repaint, no objectchange
     637                 :          0 :         pObj->ActionChanged();
     638                 :            :     }
     639                 :            :     else
     640                 :            :     {
     641 [ #  # ][ #  # ]:          0 :         if (pRedoGeo!=NULL) delete pRedoGeo;
     642                 :          0 :         pRedoGeo=pObj->GetGeoData();
     643                 :          0 :         pObj->SetGeoData(*pUndoGeo);
     644                 :            :     }
     645                 :          0 : }
     646                 :            : 
     647                 :          0 : void SdrUndoGeoObj::Redo()
     648                 :            : {
     649         [ #  # ]:          0 :     if(pUndoGroup)
     650                 :            :     {
     651                 :          0 :         pUndoGroup->Redo();
     652                 :            : 
     653                 :            :         // only repaint, no objectchange
     654                 :          0 :         pObj->ActionChanged();
     655                 :            :     }
     656                 :            :     else
     657                 :            :     {
     658 [ #  # ][ #  # ]:          0 :         if (pUndoGeo!=NULL) delete pUndoGeo;
     659                 :          0 :         pUndoGeo=pObj->GetGeoData();
     660                 :          0 :         pObj->SetGeoData(*pRedoGeo);
     661                 :            :     }
     662                 :            : 
     663                 :            :     // Trigger PageChangeCall
     664                 :          0 :     ImpShowPageOfThisObject();
     665                 :          0 : }
     666                 :            : 
     667                 :          0 : rtl::OUString SdrUndoGeoObj::GetComment() const
     668                 :            : {
     669         [ #  # ]:          0 :     XubString aStr;
     670         [ #  # ]:          0 :     ImpTakeDescriptionStr(STR_DragMethObjOwn,aStr);
     671 [ #  # ][ #  # ]:          0 :     return aStr;
     672                 :            : }
     673                 :            : 
     674                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     675                 :            : 
     676                 :        368 : SdrUndoObjList::SdrUndoObjList(SdrObject& rNewObj, bool bOrdNumDirect)
     677                 :            : :   SdrUndoObj(rNewObj),
     678                 :            :     bOwner(sal_False),
     679                 :            :     pView(NULL),
     680                 :        368 :     pPageView(NULL)
     681                 :            : {
     682         [ +  - ]:        368 :     pObjList=pObj->GetObjList();
     683         [ +  + ]:        368 :     if (bOrdNumDirect) {
     684         [ +  - ]:        187 :         nOrdNum=pObj->GetOrdNumDirect();
     685                 :            :     } else {
     686         [ +  - ]:        181 :         nOrdNum=pObj->GetOrdNum();
     687                 :            :     }
     688                 :        368 : }
     689                 :            : 
     690                 :        368 : SdrUndoObjList::~SdrUndoObjList()
     691                 :            : {
     692 [ +  - ][ +  + ]:        368 :     if (pObj!=NULL && IsOwner())
                 [ +  + ]
     693                 :            :     {
     694                 :            :         // Attribute have to go back to the regular Pool
     695         [ +  - ]:         64 :         SetOwner(sal_False);
     696                 :            : 
     697                 :            :         // now delete
     698         [ +  - ]:         64 :         SdrObject::Free( pObj );
     699                 :            :     }
     700         [ -  + ]:        368 : }
     701                 :            : 
     702                 :        128 : void SdrUndoObjList::SetOwner(bool bNew)
     703                 :            : {
     704                 :        128 :     bOwner = bNew;
     705                 :        128 : }
     706                 :            : 
     707                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     708                 :            : 
     709                 :          0 : void SdrUndoRemoveObj::Undo()
     710                 :            : {
     711                 :            :     // Trigger PageChangeCall
     712                 :          0 :     ImpShowPageOfThisObject();
     713                 :            : 
     714                 :            :     DBG_ASSERT(!pObj->IsInserted(),"UndoRemoveObj: pObj has already been inserted.");
     715         [ #  # ]:          0 :     if (!pObj->IsInserted())
     716                 :            :     {
     717                 :            :         // #i11426#
     718                 :            :         // For UNDOs in Calc/Writer it is necessary to adapt the anchor
     719                 :            :         // position of the target object.
     720                 :          0 :         Point aOwnerAnchorPos(0, 0);
     721                 :            : 
     722 [ #  # ][ #  # ]:          0 :         if(pObjList
           [ #  #  #  # ]
     723                 :          0 :             && pObjList->GetOwnerObj()
     724 [ #  # ][ #  # ]:          0 :             && pObjList->GetOwnerObj()->ISA(SdrObjGroup))
     725                 :            :         {
     726         [ #  # ]:          0 :             aOwnerAnchorPos = pObjList->GetOwnerObj()->GetAnchorPos();
     727                 :            :         }
     728                 :            : 
     729         [ #  # ]:          0 :         E3DModifySceneSnapRectUpdater aUpdater(pObjList->GetOwnerObj());
     730                 :          0 :         SdrInsertReason aReason(SDRREASON_UNDO);
     731         [ #  # ]:          0 :         pObjList->InsertObject(pObj,nOrdNum,&aReason);
     732                 :            : 
     733                 :            :         // #i11426#
     734 [ #  # ][ #  # ]:          0 :         if(aOwnerAnchorPos.X() || aOwnerAnchorPos.Y())
                 [ #  # ]
     735                 :            :         {
     736         [ #  # ]:          0 :             pObj->NbcSetAnchorPos(aOwnerAnchorPos);
     737         [ #  # ]:          0 :         }
     738                 :            :     }
     739                 :          0 : }
     740                 :            : 
     741                 :          0 : void SdrUndoRemoveObj::Redo()
     742                 :            : {
     743                 :            :     DBG_ASSERT(pObj->IsInserted(),"RedoRemoveObj: pObj is not inserted.");
     744         [ #  # ]:          0 :     if (pObj->IsInserted())
     745                 :            :     {
     746         [ #  # ]:          0 :         ImplUnmarkObject( pObj );
     747         [ #  # ]:          0 :         E3DModifySceneSnapRectUpdater aUpdater(pObj);
     748 [ #  # ][ #  # ]:          0 :         pObjList->RemoveObject(nOrdNum);
     749                 :            :     }
     750                 :            : 
     751                 :            :     // Trigger PageChangeCall
     752                 :          0 :     ImpShowPageOfThisObject();
     753                 :          0 : }
     754                 :            : 
     755                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     756                 :            : 
     757                 :          0 : void SdrUndoInsertObj::Undo()
     758                 :            : {
     759                 :            :     // Trigger PageChangeCall
     760                 :          0 :     ImpShowPageOfThisObject();
     761                 :            : 
     762                 :            :     DBG_ASSERT(pObj->IsInserted(),"UndoInsertObj: pObj is not inserted.");
     763         [ #  # ]:          0 :     if (pObj->IsInserted())
     764                 :            :     {
     765                 :          0 :         ImplUnmarkObject( pObj );
     766                 :            : 
     767                 :            : #ifdef DBG_UTIL
     768                 :            :         SdrObject* pChkObj=
     769                 :            : #endif
     770                 :          0 :         pObjList->RemoveObject(nOrdNum);
     771                 :            :         DBG_ASSERT(pChkObj==pObj,"UndoInsertObj: RemoveObjNum!=pObj");
     772                 :            :     }
     773                 :          0 : }
     774                 :            : 
     775                 :          0 : void SdrUndoInsertObj::Redo()
     776                 :            : {
     777                 :            :     DBG_ASSERT(!pObj->IsInserted(),"RedoInsertObj: pObj is already inserted");
     778         [ #  # ]:          0 :     if (!pObj->IsInserted())
     779                 :            :     {
     780                 :            :         // Restore anchor position of an object,
     781                 :            :         // which becomes a member of a group, because its cleared in method
     782                 :            :         // <InsertObject(..)>. Needed for correct Redo in Writer. (#i45952#)
     783                 :          0 :         Point aAnchorPos( 0, 0 );
     784 [ #  # ][ #  # ]:          0 :         if ( pObjList &&
           [ #  #  #  # ]
     785                 :          0 :              pObjList->GetOwnerObj() &&
     786 [ #  # ][ #  # ]:          0 :              pObjList->GetOwnerObj()->ISA(SdrObjGroup) )
     787                 :            :         {
     788         [ #  # ]:          0 :             aAnchorPos = pObj->GetAnchorPos();
     789                 :            :         }
     790                 :            : 
     791                 :          0 :         SdrInsertReason aReason(SDRREASON_UNDO);
     792         [ #  # ]:          0 :         pObjList->InsertObject(pObj,nOrdNum,&aReason);
     793                 :            : 
     794                 :            :         // Arcs lose position when grouped (#i45952#)
     795 [ #  # ][ #  # ]:          0 :         if ( aAnchorPos.X() || aAnchorPos.Y() )
                 [ #  # ]
     796                 :            :         {
     797         [ #  # ]:          0 :             pObj->NbcSetAnchorPos( aAnchorPos );
     798                 :            :         }
     799                 :            :     }
     800                 :            : 
     801                 :            :     // Trigger PageChangeCall
     802                 :          0 :     ImpShowPageOfThisObject();
     803                 :          0 : }
     804                 :            : 
     805                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     806                 :            : 
     807                 :          0 : void SdrUndoDelObj::Undo()
     808                 :            : {
     809                 :          0 :     SdrUndoRemoveObj::Undo();
     810                 :            :     DBG_ASSERT(IsOwner(),"UndoDeleteObj: pObj does not belong to UndoAction");
     811                 :          0 :     SetOwner(sal_False);
     812                 :          0 : }
     813                 :            : 
     814                 :          0 : void SdrUndoDelObj::Redo()
     815                 :            : {
     816                 :          0 :     SdrUndoRemoveObj::Redo();
     817                 :            :     DBG_ASSERT(!IsOwner(),"RedoDeleteObj: pObj already belongs to UndoAction");
     818                 :          0 :     SetOwner(sal_True);
     819                 :          0 : }
     820                 :            : 
     821                 :         99 : rtl::OUString SdrUndoDelObj::GetComment() const
     822                 :            : {
     823         [ +  - ]:         99 :     XubString aStr;
     824         [ +  - ]:         99 :     ImpTakeDescriptionStr(STR_EditDelete,aStr);
     825 [ +  - ][ +  - ]:         99 :     return aStr;
     826                 :            : }
     827                 :            : 
     828                 :          0 : void SdrUndoDelObj::SdrRepeat(SdrView& rView)
     829                 :            : {
     830                 :          0 :     rView.DeleteMarked();
     831                 :          0 : }
     832                 :            : 
     833                 :          0 : bool SdrUndoDelObj::CanSdrRepeat(SdrView& rView) const
     834                 :            : {
     835                 :          0 :     return rView.AreObjectsMarked();
     836                 :            : }
     837                 :            : 
     838                 :          0 : XubString SdrUndoDelObj::GetSdrRepeatComment(SdrView& /*rView*/) const
     839                 :            : {
     840                 :          0 :     XubString aStr;
     841         [ #  # ]:          0 :     ImpTakeDescriptionStr(STR_EditDelete,aStr,sal_True);
     842                 :          0 :     return aStr;
     843                 :            : }
     844                 :            : 
     845                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     846                 :            : 
     847                 :          0 : void SdrUndoNewObj::Undo()
     848                 :            : {
     849                 :          0 :     SdrUndoInsertObj::Undo();
     850                 :            :     DBG_ASSERT(!IsOwner(),"RedoNewObj: pObj already belongs to UndoAction");
     851                 :          0 :     SetOwner(sal_True);
     852                 :          0 : }
     853                 :            : 
     854                 :          0 : void SdrUndoNewObj::Redo()
     855                 :            : {
     856                 :          0 :     SdrUndoInsertObj::Redo();
     857                 :            :     DBG_ASSERT(IsOwner(),"RedoNewObj: pObj does not belong to UndoAction");
     858                 :          0 :     SetOwner(sal_False);
     859                 :          0 : }
     860                 :            : 
     861                 :        780 : rtl::OUString SdrUndoNewObj::GetComment( const SdrObject& _rForObject )
     862                 :            : {
     863         [ +  - ]:        780 :     String sComment;
     864         [ +  - ]:        780 :     GetDescriptionStringForObject( _rForObject, STR_UndoInsertObj, sComment );
     865 [ +  - ][ +  - ]:        780 :     return sComment;
     866                 :            : }
     867                 :            : 
     868                 :        178 : rtl::OUString SdrUndoNewObj::GetComment() const
     869                 :            : {
     870         [ +  - ]:        178 :     XubString aStr;
     871         [ +  - ]:        178 :     ImpTakeDescriptionStr(STR_UndoInsertObj,aStr);
     872 [ +  - ][ +  - ]:        178 :     return aStr;
     873                 :            : }
     874                 :            : 
     875                 :         40 : SdrUndoReplaceObj::SdrUndoReplaceObj(SdrObject& rOldObj1, SdrObject& rNewObj1, bool bOrdNumDirect)
     876                 :            : :   SdrUndoObj(rOldObj1),
     877                 :            :     bOldOwner(sal_False),
     878                 :            :     bNewOwner(sal_False),
     879                 :         40 :     pNewObj(&rNewObj1)
     880                 :            : {
     881         [ +  - ]:         40 :     SetOldOwner(sal_True);
     882                 :            : 
     883         [ +  - ]:         40 :     pObjList=pObj->GetObjList();
     884         [ -  + ]:         40 :     if (bOrdNumDirect) {
     885         [ #  # ]:          0 :         nOrdNum=pObj->GetOrdNumDirect();
     886                 :            :     } else {
     887         [ +  - ]:         40 :         nOrdNum=pObj->GetOrdNum();
     888                 :            :     }
     889                 :         40 : }
     890                 :            : 
     891                 :         40 : SdrUndoReplaceObj::~SdrUndoReplaceObj()
     892                 :            : {
     893 [ +  - ][ +  - ]:         40 :     if (pObj!=NULL && IsOldOwner())
                 [ +  - ]
     894                 :            :     {
     895                 :            :         // Attribute have to go back into the Pool
     896         [ +  - ]:         40 :         SetOldOwner(sal_False);
     897                 :            : 
     898                 :            :         // now delete
     899         [ +  - ]:         40 :         SdrObject::Free( pObj );
     900                 :            :     }
     901 [ +  - ][ -  + ]:         40 :     if (pNewObj!=NULL && IsNewOwner())
                 [ -  + ]
     902                 :            :     {
     903                 :            :         // Attribute have to go back into the Pool
     904         [ #  # ]:          0 :         SetNewOwner(sal_False);
     905                 :            : 
     906                 :            :         // now delete
     907         [ #  # ]:          0 :         SdrObject::Free( pNewObj );
     908                 :            :     }
     909         [ -  + ]:         40 : }
     910                 :            : 
     911                 :          0 : void SdrUndoReplaceObj::Undo()
     912                 :            : {
     913                 :            :     // Trigger PageChangeCall
     914                 :          0 :     ImpShowPageOfThisObject();
     915                 :            : 
     916 [ #  # ][ #  # ]:          0 :     if (IsOldOwner() && !IsNewOwner())
                 [ #  # ]
     917                 :            :     {
     918                 :            :         DBG_ASSERT(!pObj->IsInserted(),"SdrUndoReplaceObj::Undo(): Old object is already inserted!");
     919                 :            :         DBG_ASSERT(pNewObj->IsInserted(),"SdrUndoReplaceObj::Undo(): New object is not inserted!");
     920                 :          0 :         SetOldOwner(sal_False);
     921                 :          0 :         SetNewOwner(sal_True);
     922                 :            : 
     923                 :          0 :         ImplUnmarkObject( pNewObj );
     924                 :          0 :         pObjList->ReplaceObject(pObj,nOrdNum);
     925                 :            :     }
     926                 :            :     else
     927                 :            :     {
     928                 :            :         OSL_FAIL("SdrUndoReplaceObj::Undo(): Wrong IsMine flags. Did you call Undo twice?");
     929                 :            :     }
     930                 :          0 : }
     931                 :            : 
     932                 :          0 : void SdrUndoReplaceObj::Redo()
     933                 :            : {
     934 [ #  # ][ #  # ]:          0 :     if (!IsOldOwner() && IsNewOwner())
                 [ #  # ]
     935                 :            :     {
     936                 :            :         DBG_ASSERT(!pNewObj->IsInserted(),"SdrUndoReplaceObj::Redo(): New object is already inserted!!");
     937                 :            :         DBG_ASSERT(pObj->IsInserted(),"SdrUndoReplaceObj::Redo(): Old object is not inserted!!");
     938                 :          0 :         SetOldOwner(sal_True);
     939                 :          0 :         SetNewOwner(sal_False);
     940                 :            : 
     941                 :          0 :         ImplUnmarkObject( pObj );
     942                 :          0 :         pObjList->ReplaceObject(pNewObj,nOrdNum);
     943                 :            : 
     944                 :            :     }
     945                 :            :     else
     946                 :            :     {
     947                 :            :         OSL_FAIL("SdrUndoReplaceObj::Redo(): Wrong IsMine flags. Did you call Redo twice?");
     948                 :            :     }
     949                 :            : 
     950                 :            :     // Trigger PageChangeCall
     951                 :          0 :     ImpShowPageOfThisObject();
     952                 :          0 : }
     953                 :            : 
     954                 :          0 : void SdrUndoReplaceObj::SetNewOwner(bool bNew)
     955                 :            : {
     956                 :          0 :     bNewOwner = bNew;
     957                 :          0 : }
     958                 :            : 
     959                 :         80 : void SdrUndoReplaceObj::SetOldOwner(bool bNew)
     960                 :            : {
     961                 :         80 :     bOldOwner = bNew;
     962                 :         80 : }
     963                 :            : 
     964                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     965                 :            : 
     966                 :          0 : rtl::OUString SdrUndoCopyObj::GetComment() const
     967                 :            : {
     968         [ #  # ]:          0 :     XubString aStr;
     969         [ #  # ]:          0 :     ImpTakeDescriptionStr(STR_UndoCopyObj,aStr);
     970 [ #  # ][ #  # ]:          0 :     return aStr;
     971                 :            : }
     972                 :            : 
     973                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     974                 :            : // #i11702#
     975                 :            : 
     976                 :          0 : SdrUndoObjectLayerChange::SdrUndoObjectLayerChange(SdrObject& rObj, SdrLayerID aOldLayer, SdrLayerID aNewLayer)
     977                 :            : :   SdrUndoObj(rObj),
     978                 :            :     maOldLayer(aOldLayer),
     979                 :          0 :     maNewLayer(aNewLayer)
     980                 :            : {
     981                 :          0 : }
     982                 :            : 
     983                 :          0 : void SdrUndoObjectLayerChange::Undo()
     984                 :            : {
     985                 :          0 :     ImpShowPageOfThisObject();
     986                 :          0 :     pObj->SetLayer(maOldLayer);
     987                 :          0 : }
     988                 :            : 
     989                 :          0 : void SdrUndoObjectLayerChange::Redo()
     990                 :            : {
     991                 :          0 :     pObj->SetLayer(maNewLayer);
     992                 :          0 :     ImpShowPageOfThisObject();
     993                 :          0 : }
     994                 :            : 
     995                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     996                 :            : 
     997                 :          0 : SdrUndoObjOrdNum::SdrUndoObjOrdNum(SdrObject& rNewObj, sal_uInt32 nOldOrdNum1, sal_uInt32 nNewOrdNum1):
     998                 :            :     SdrUndoObj(rNewObj),
     999                 :            :     nOldOrdNum(nOldOrdNum1),
    1000                 :          0 :     nNewOrdNum(nNewOrdNum1)
    1001                 :            : {
    1002                 :          0 : }
    1003                 :            : 
    1004                 :          0 : void SdrUndoObjOrdNum::Undo()
    1005                 :            : {
    1006                 :            :     // Trigger PageChangeCall
    1007                 :          0 :     ImpShowPageOfThisObject();
    1008                 :            : 
    1009                 :          0 :     SdrObjList* pOL=pObj->GetObjList();
    1010         [ #  # ]:          0 :     if (pOL==NULL) {
    1011                 :            :         OSL_FAIL("UndoObjOrdNum: pObj does not have an ObjList.");
    1012                 :          0 :         return;
    1013                 :            :     }
    1014                 :          0 :     pOL->SetObjectOrdNum(nNewOrdNum,nOldOrdNum);
    1015                 :            : }
    1016                 :            : 
    1017                 :          0 : void SdrUndoObjOrdNum::Redo()
    1018                 :            : {
    1019                 :          0 :     SdrObjList* pOL=pObj->GetObjList();
    1020         [ #  # ]:          0 :     if (pOL==NULL) {
    1021                 :            :         OSL_FAIL("RedoObjOrdNum: pObj does not have an ObjList.");
    1022                 :          0 :         return;
    1023                 :            :     }
    1024                 :          0 :     pOL->SetObjectOrdNum(nOldOrdNum,nNewOrdNum);
    1025                 :            : 
    1026                 :            :     // Trigger PageChangeCall
    1027                 :          0 :     ImpShowPageOfThisObject();
    1028                 :            : }
    1029                 :            : 
    1030                 :          0 : rtl::OUString SdrUndoObjOrdNum::GetComment() const
    1031                 :            : {
    1032         [ #  # ]:          0 :     XubString aStr;
    1033         [ #  # ]:          0 :     ImpTakeDescriptionStr(STR_UndoObjOrdNum,aStr);
    1034 [ #  # ][ #  # ]:          0 :     return aStr;
    1035                 :            : }
    1036                 :            : 
    1037                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
    1038                 :            : 
    1039                 :          0 : SdrUndoObjSetText::SdrUndoObjSetText(SdrObject& rNewObj, sal_Int32 nText)
    1040                 :            : : SdrUndoObj(rNewObj)
    1041                 :            : , pOldText(NULL)
    1042                 :            : , pNewText(NULL)
    1043                 :            : , bNewTextAvailable(sal_False)
    1044                 :            : , bEmptyPresObj(sal_False)
    1045                 :          0 : , mnText(nText)
    1046                 :            : {
    1047         [ #  # ]:          0 :     SdrText* pText = static_cast< SdrTextObj*>( &rNewObj )->getText(mnText);
    1048 [ #  # ][ #  # ]:          0 :     if( pText && pText->GetOutlinerParaObject() )
         [ #  # ][ #  # ]
    1049 [ #  # ][ #  # ]:          0 :         pOldText = new OutlinerParaObject(*pText->GetOutlinerParaObject());
                 [ #  # ]
    1050                 :            : 
    1051         [ #  # ]:          0 :     bEmptyPresObj = rNewObj.IsEmptyPresObj();
    1052                 :          0 : }
    1053                 :            : 
    1054                 :          0 : SdrUndoObjSetText::~SdrUndoObjSetText()
    1055                 :            : {
    1056         [ #  # ]:          0 :     if ( pOldText )
    1057 [ #  # ][ #  # ]:          0 :         delete pOldText;
    1058         [ #  # ]:          0 :     if ( pNewText )
    1059 [ #  # ][ #  # ]:          0 :         delete pNewText;
    1060         [ #  # ]:          0 : }
    1061                 :            : 
    1062                 :          0 : void SdrUndoObjSetText::AfterSetText()
    1063                 :            : {
    1064         [ #  # ]:          0 :     if (!bNewTextAvailable)
    1065                 :            :     {
    1066                 :          0 :         SdrText* pText = static_cast< SdrTextObj*>( pObj )->getText(mnText);
    1067 [ #  # ][ #  # ]:          0 :         if( pText && pText->GetOutlinerParaObject() )
                 [ #  # ]
    1068         [ #  # ]:          0 :             pNewText = new OutlinerParaObject(*pText->GetOutlinerParaObject());
    1069                 :          0 :         bNewTextAvailable=sal_True;
    1070                 :            :     }
    1071                 :          0 : }
    1072                 :            : 
    1073                 :          0 : void SdrUndoObjSetText::Undo()
    1074                 :            : {
    1075                 :            :     // Trigger PageChangeCall
    1076                 :          0 :     ImpShowPageOfThisObject();
    1077                 :            : 
    1078                 :            :     // save old text for Redo
    1079         [ #  # ]:          0 :     if (!bNewTextAvailable)
    1080                 :          0 :         AfterSetText();
    1081                 :            : 
    1082                 :            :     // copy text for Undo, because the original now belongs to SetOutlinerParaObject()
    1083                 :          0 :     OutlinerParaObject* pText1 = pOldText;
    1084         [ #  # ]:          0 :     if(pText1)
    1085         [ #  # ]:          0 :         pText1 = new OutlinerParaObject(*pText1);
    1086                 :            : 
    1087                 :          0 :     SdrText* pText = static_cast< SdrTextObj*>( pObj )->getText(mnText);
    1088         [ #  # ]:          0 :     if( pText )
    1089                 :          0 :         pText->SetOutlinerParaObject(pText1);
    1090                 :            : 
    1091                 :          0 :     pObj->SetEmptyPresObj( bEmptyPresObj );
    1092                 :          0 :     pObj->ActionChanged();
    1093                 :          0 : }
    1094                 :            : 
    1095                 :          0 : void SdrUndoObjSetText::Redo()
    1096                 :            : {
    1097                 :            :     // copy text for Undo, because the original now belongs to SetOutlinerParaObject()
    1098                 :          0 :     OutlinerParaObject* pText1 = pNewText;
    1099                 :            : 
    1100         [ #  # ]:          0 :     if(pText1)
    1101         [ #  # ]:          0 :         pText1 = new OutlinerParaObject(*pText1);
    1102                 :            : 
    1103                 :          0 :     SdrText* pText = static_cast< SdrTextObj*>( pObj )->getText(mnText);
    1104         [ #  # ]:          0 :     if( pText )
    1105                 :          0 :         static_cast< SdrTextObj* >( pObj )->NbcSetOutlinerParaObjectForText( pText1, pText );
    1106                 :            : 
    1107                 :          0 :     pObj->ActionChanged();
    1108                 :            : 
    1109                 :            :     // Trigger PageChangeCall
    1110                 :          0 :     ImpShowPageOfThisObject();
    1111                 :          0 : }
    1112                 :            : 
    1113                 :          0 : rtl::OUString SdrUndoObjSetText::GetComment() const
    1114                 :            : {
    1115         [ #  # ]:          0 :     XubString aStr;
    1116         [ #  # ]:          0 :     ImpTakeDescriptionStr(STR_UndoObjSetText,aStr);
    1117 [ #  # ][ #  # ]:          0 :     return aStr;
    1118                 :            : }
    1119                 :            : 
    1120                 :          0 : XubString SdrUndoObjSetText::GetSdrRepeatComment(SdrView& /*rView*/) const
    1121                 :            : {
    1122                 :          0 :     XubString aStr;
    1123         [ #  # ]:          0 :     ImpTakeDescriptionStr(STR_UndoObjSetText,aStr);
    1124                 :          0 :     return aStr;
    1125                 :            : }
    1126                 :            : 
    1127                 :          0 : void SdrUndoObjSetText::SdrRepeat(SdrView& rView)
    1128                 :            : {
    1129 [ #  # ][ #  # ]:          0 :     if (bNewTextAvailable && rView.AreObjectsMarked())
                 [ #  # ]
    1130                 :            :     {
    1131                 :          0 :         const SdrMarkList& rML=rView.GetMarkedObjectList();
    1132                 :            : 
    1133                 :          0 :         const bool bUndo = rView.IsUndoEnabled();
    1134         [ #  # ]:          0 :         if( bUndo )
    1135                 :            :         {
    1136         [ #  # ]:          0 :             XubString aStr;
    1137         [ #  # ]:          0 :             ImpTakeDescriptionStr(STR_UndoObjSetText,aStr);
    1138 [ #  # ][ #  # ]:          0 :             rView.BegUndo(aStr);
    1139                 :            :         }
    1140                 :            : 
    1141                 :          0 :         sal_uIntPtr nAnz=rML.GetMarkCount();
    1142         [ #  # ]:          0 :         for (sal_uIntPtr nm=0; nm<nAnz; nm++)
    1143                 :            :         {
    1144                 :          0 :             SdrObject* pObj2=rML.GetMark(nm)->GetMarkedSdrObj();
    1145 [ #  # ][ #  # ]:          0 :             SdrTextObj* pTextObj=PTR_CAST(SdrTextObj,pObj2);
    1146         [ #  # ]:          0 :             if (pTextObj!=NULL)
    1147                 :            :             {
    1148         [ #  # ]:          0 :                 if( bUndo )
    1149         [ #  # ]:          0 :                     rView.AddUndo(new SdrUndoObjSetText(*pTextObj,0));
    1150                 :            : 
    1151                 :          0 :                 OutlinerParaObject* pText1=pNewText;
    1152         [ #  # ]:          0 :                 if (pText1!=NULL)
    1153         [ #  # ]:          0 :                     pText1 = new OutlinerParaObject(*pText1);
    1154                 :          0 :                 pTextObj->SetOutlinerParaObject(pText1);
    1155                 :            :             }
    1156                 :            :         }
    1157                 :            : 
    1158         [ #  # ]:          0 :         if( bUndo )
    1159                 :          0 :             rView.EndUndo();
    1160                 :            :     }
    1161                 :          0 : }
    1162                 :            : 
    1163                 :          0 : bool SdrUndoObjSetText::CanSdrRepeat(SdrView& rView) const
    1164                 :            : {
    1165                 :          0 :     bool bOk = false;
    1166 [ #  # ][ #  # ]:          0 :     if (bNewTextAvailable && rView.AreObjectsMarked()) {
                 [ #  # ]
    1167                 :          0 :         bOk=sal_True;
    1168                 :            :     }
    1169                 :          0 :     return bOk;
    1170                 :            : }
    1171                 :            : 
    1172                 :            : // Undo/Redo for setting object's name (#i73249#)
    1173                 :        115 : SdrUndoObjStrAttr::SdrUndoObjStrAttr( SdrObject& rNewObj,
    1174                 :            :                                       const ObjStrAttrType eObjStrAttr,
    1175                 :            :                                       const String& sOldStr,
    1176                 :            :                                       const String& sNewStr)
    1177                 :            :     : SdrUndoObj( rNewObj ),
    1178                 :            :       meObjStrAttr( eObjStrAttr ),
    1179                 :            :       msOldStr( sOldStr ),
    1180 [ +  - ][ +  - ]:        115 :       msNewStr( sNewStr )
    1181                 :            : {
    1182                 :        115 : }
    1183                 :            : 
    1184                 :          0 : void SdrUndoObjStrAttr::Undo()
    1185                 :            : {
    1186                 :          0 :     ImpShowPageOfThisObject();
    1187                 :            : 
    1188   [ #  #  #  # ]:          0 :     switch ( meObjStrAttr )
    1189                 :            :     {
    1190                 :            :         case OBJ_NAME:
    1191                 :            :         {
    1192         [ #  # ]:          0 :             pObj->SetName( msOldStr );
    1193                 :            :         }
    1194                 :          0 :         break;
    1195                 :            :         case OBJ_TITLE:
    1196                 :            :         {
    1197         [ #  # ]:          0 :             pObj->SetTitle( msOldStr );
    1198                 :            :         }
    1199                 :          0 :         break;
    1200                 :            :         case OBJ_DESCRIPTION:
    1201                 :            :         {
    1202         [ #  # ]:          0 :             pObj->SetDescription( msOldStr );
    1203                 :            :         }
    1204                 :          0 :         break;
    1205                 :            :     }
    1206                 :          0 : }
    1207                 :            : 
    1208                 :          0 : void SdrUndoObjStrAttr::Redo()
    1209                 :            : {
    1210   [ #  #  #  # ]:          0 :     switch ( meObjStrAttr )
    1211                 :            :     {
    1212                 :            :         case OBJ_NAME:
    1213                 :            :         {
    1214         [ #  # ]:          0 :             pObj->SetName( msNewStr );
    1215                 :            :         }
    1216                 :          0 :         break;
    1217                 :            :         case OBJ_TITLE:
    1218                 :            :         {
    1219         [ #  # ]:          0 :             pObj->SetTitle( msNewStr );
    1220                 :            :         }
    1221                 :          0 :         break;
    1222                 :            :         case OBJ_DESCRIPTION:
    1223                 :            :         {
    1224         [ #  # ]:          0 :             pObj->SetDescription( msNewStr );
    1225                 :            :         }
    1226                 :          0 :         break;
    1227                 :            :     }
    1228                 :            : 
    1229                 :          0 :     ImpShowPageOfThisObject();
    1230                 :          0 : }
    1231                 :            : 
    1232                 :        169 : rtl::OUString SdrUndoObjStrAttr::GetComment() const
    1233                 :            : {
    1234         [ +  - ]:        169 :     String aStr;
    1235   [ +  -  -  - ]:        169 :     switch ( meObjStrAttr )
    1236                 :            :     {
    1237                 :            :         case OBJ_NAME:
    1238                 :            :         {
    1239         [ +  - ]:        169 :             ImpTakeDescriptionStr( STR_UndoObjName, aStr );
    1240         [ +  - ]:        169 :             aStr += sal_Unicode(' ');
    1241         [ +  - ]:        169 :             aStr += sal_Unicode('\'');
    1242         [ +  - ]:        169 :             aStr += msNewStr;
    1243         [ +  - ]:        169 :             aStr += sal_Unicode('\'');
    1244                 :            :         }
    1245                 :        169 :         break;
    1246                 :            :         case OBJ_TITLE:
    1247                 :            :         {
    1248         [ #  # ]:          0 :             ImpTakeDescriptionStr( STR_UndoObjTitle, aStr );
    1249                 :            :         }
    1250                 :          0 :         break;
    1251                 :            :         case OBJ_DESCRIPTION:
    1252                 :            :         {
    1253         [ #  # ]:          0 :             ImpTakeDescriptionStr( STR_UndoObjDescription, aStr );
    1254                 :            :         }
    1255                 :          0 :         break;
    1256                 :            :     }
    1257                 :            : 
    1258 [ +  - ][ +  - ]:        169 :     return aStr;
    1259                 :            : }
    1260                 :            : 
    1261                 :            : 
    1262                 :          2 : SdrUndoLayer::SdrUndoLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel):
    1263                 :            :     SdrUndoAction(rNewModel),
    1264         [ +  - ]:          2 :     pLayer(rNewLayerAdmin.GetLayer(nLayerNum)),
    1265                 :            :     pLayerAdmin(&rNewLayerAdmin),
    1266                 :            :     nNum(nLayerNum),
    1267                 :          2 :     bItsMine(sal_False)
    1268                 :            : {
    1269                 :          2 : }
    1270                 :            : 
    1271                 :          2 : SdrUndoLayer::~SdrUndoLayer()
    1272                 :            : {
    1273         [ +  - ]:          2 :     if (bItsMine) {
    1274 [ +  - ][ +  - ]:          2 :         delete pLayer;
    1275                 :            :     }
    1276         [ -  + ]:          2 : }
    1277                 :            : 
    1278                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
    1279                 :            : 
    1280                 :          0 : void SdrUndoNewLayer::Undo()
    1281                 :            : {
    1282                 :            :     DBG_ASSERT(!bItsMine,"SdrUndoNewLayer::Undo(): Layer already belongs to UndoAction.");
    1283                 :          0 :     bItsMine=sal_True;
    1284                 :            : #ifdef DBG_UTIL
    1285                 :            :     SdrLayer* pCmpLayer=
    1286                 :            : #endif
    1287                 :          0 :     pLayerAdmin->RemoveLayer(nNum);
    1288                 :            :     DBG_ASSERT(pCmpLayer==pLayer,"SdrUndoNewLayer::Undo(): Removed layer is != pLayer.");
    1289                 :          0 : }
    1290                 :            : 
    1291                 :          0 : void SdrUndoNewLayer::Redo()
    1292                 :            : {
    1293                 :            :     DBG_ASSERT(bItsMine,"SdrUndoNewLayer::Undo(): Layer does not belong to UndoAction.");
    1294                 :          0 :     bItsMine=sal_False;
    1295                 :          0 :     pLayerAdmin->InsertLayer(pLayer,nNum);
    1296                 :          0 : }
    1297                 :            : 
    1298                 :          0 : rtl::OUString SdrUndoNewLayer::GetComment() const
    1299                 :            : {
    1300         [ #  # ]:          0 :     return ImpGetResStr(STR_UndoNewLayer);
    1301                 :            : }
    1302                 :            : 
    1303                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
    1304                 :            : 
    1305                 :          0 : void SdrUndoDelLayer::Undo()
    1306                 :            : {
    1307                 :            :     DBG_ASSERT(bItsMine,"SdrUndoDelLayer::Undo(): Layer does not belong to UndoAction.");
    1308                 :          0 :     bItsMine=sal_False;
    1309                 :          0 :     pLayerAdmin->InsertLayer(pLayer,nNum);
    1310                 :          0 : }
    1311                 :            : 
    1312                 :          0 : void SdrUndoDelLayer::Redo()
    1313                 :            : {
    1314                 :            :     DBG_ASSERT(!bItsMine,"SdrUndoDelLayer::Undo(): Layer already belongs to UndoAction.");
    1315                 :          0 :     bItsMine=sal_True;
    1316                 :            : #ifdef DBG_UTIL
    1317                 :            :     SdrLayer* pCmpLayer=
    1318                 :            : #endif
    1319                 :          0 :     pLayerAdmin->RemoveLayer(nNum);
    1320                 :            :     DBG_ASSERT(pCmpLayer==pLayer,"SdrUndoDelLayer::Redo(): Removed layer is != pLayer.");
    1321                 :          0 : }
    1322                 :            : 
    1323                 :          2 : rtl::OUString SdrUndoDelLayer::GetComment() const
    1324                 :            : {
    1325         [ +  - ]:          2 :     return ImpGetResStr(STR_UndoDelLayer);
    1326                 :            : }
    1327                 :            : 
    1328                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
    1329                 :            : 
    1330                 :          0 : void SdrUndoMoveLayer::Undo()
    1331                 :            : {
    1332                 :            : #ifdef DBG_UTIL
    1333                 :            :     SdrLayer* pCmpLayer=
    1334                 :            : #endif
    1335                 :          0 :     pLayerAdmin->RemoveLayer(nNeuPos);
    1336                 :            :     DBG_ASSERT(pCmpLayer==pLayer,"SdrUndoMoveLayer::Undo(): Removed layer is != pLayer.");
    1337                 :          0 :     pLayerAdmin->InsertLayer(pLayer,nNum);
    1338                 :          0 : }
    1339                 :            : 
    1340                 :          0 : void SdrUndoMoveLayer::Redo()
    1341                 :            : {
    1342                 :            : #ifdef DBG_UTIL
    1343                 :            :     SdrLayer* pCmpLayer=
    1344                 :            : #endif
    1345                 :          0 :     pLayerAdmin->RemoveLayer(nNum);
    1346                 :            :     DBG_ASSERT(pCmpLayer==pLayer,"SdrUndoMoveLayer::Redo(): Removed layer is != pLayer.");
    1347                 :          0 :     pLayerAdmin->InsertLayer(pLayer,nNeuPos);
    1348                 :          0 : }
    1349                 :            : 
    1350                 :          0 : rtl::OUString SdrUndoMoveLayer::GetComment() const
    1351                 :            : {
    1352         [ #  # ]:          0 :     return ImpGetResStr(STR_UndoMovLayer);
    1353                 :            : }
    1354                 :            : 
    1355                 :            : 
    1356                 :         69 : SdrUndoPage::SdrUndoPage(SdrPage& rNewPg)
    1357                 :         69 : :   SdrUndoAction(*rNewPg.GetModel()),
    1358                 :         69 :     mrPage(rNewPg)
    1359                 :            : {
    1360                 :         69 : }
    1361                 :            : 
    1362                 :          0 : void SdrUndoPage::ImpInsertPage(sal_uInt16 nNum)
    1363                 :            : {
    1364                 :            :     DBG_ASSERT(!mrPage.IsInserted(),"SdrUndoPage::ImpInsertPage(): mrPage is already inserted.");
    1365         [ #  # ]:          0 :     if (!mrPage.IsInserted()) {
    1366         [ #  # ]:          0 :         if (mrPage.IsMasterPage()) {
    1367                 :          0 :             rMod.InsertMasterPage(&mrPage,nNum);
    1368                 :            :         } else {
    1369                 :          0 :             rMod.InsertPage(&mrPage,nNum);
    1370                 :            :         }
    1371                 :            :     }
    1372                 :          0 : }
    1373                 :            : 
    1374                 :          0 : void SdrUndoPage::ImpRemovePage(sal_uInt16 nNum)
    1375                 :            : {
    1376                 :            :     DBG_ASSERT(mrPage.IsInserted(),"SdrUndoPage::ImpRemovePage(): mrPage is not inserted.");
    1377         [ #  # ]:          0 :     if (mrPage.IsInserted()) {
    1378                 :          0 :         SdrPage* pChkPg=NULL;
    1379         [ #  # ]:          0 :         if (mrPage.IsMasterPage()) {
    1380                 :          0 :             pChkPg=rMod.RemoveMasterPage(nNum);
    1381                 :            :         } else {
    1382                 :          0 :             pChkPg=rMod.RemovePage(nNum);
    1383                 :            :         }
    1384                 :            :         DBG_ASSERT(pChkPg==&mrPage,"SdrUndoPage::ImpRemovePage(): RemovePage!=&mrPage");
    1385                 :            :         (void)pChkPg;
    1386                 :            :     }
    1387                 :          0 : }
    1388                 :            : 
    1389                 :          0 : void SdrUndoPage::ImpMovePage(sal_uInt16 nOldNum, sal_uInt16 nNewNum)
    1390                 :            : {
    1391                 :            :     DBG_ASSERT(mrPage.IsInserted(),"SdrUndoPage::ImpMovePage(): mrPage is not inserted.");
    1392         [ #  # ]:          0 :     if (mrPage.IsInserted()) {
    1393         [ #  # ]:          0 :         if (mrPage.IsMasterPage()) {
    1394                 :          0 :             rMod.MoveMasterPage(nOldNum,nNewNum);
    1395                 :            :         } else {
    1396                 :          0 :             rMod.MovePage(nOldNum,nNewNum);
    1397                 :            :         }
    1398                 :            :     }
    1399                 :          0 : }
    1400                 :            : 
    1401                 :          8 : void SdrUndoPage::ImpTakeDescriptionStr(sal_uInt16 nStrCacheID, XubString& rStr, sal_uInt16 /*n*/, bool /*bRepeat*/) const
    1402                 :            : {
    1403         [ +  - ]:          8 :     rStr=ImpGetResStr(nStrCacheID);
    1404                 :          8 : }
    1405                 :            : 
    1406                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
    1407                 :            : 
    1408                 :         69 : SdrUndoPageList::SdrUndoPageList(SdrPage& rNewPg):
    1409                 :            :     SdrUndoPage(rNewPg),
    1410                 :         69 :     bItsMine(sal_False)
    1411                 :            : {
    1412         [ +  - ]:         69 :     nPageNum=rNewPg.GetPageNum();
    1413                 :         69 : }
    1414                 :            : 
    1415                 :         69 : SdrUndoPageList::~SdrUndoPageList()
    1416                 :            : {
    1417         [ +  + ]:         69 :     if(bItsMine)
    1418                 :            :     {
    1419 [ +  - ][ +  - ]:         27 :         delete (&mrPage);
    1420                 :            :     }
    1421         [ -  + ]:         69 : }
    1422                 :            : 
    1423                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
    1424                 :            : 
    1425                 :         27 : SdrUndoDelPage::SdrUndoDelPage(SdrPage& rNewPg):
    1426                 :            :     SdrUndoPageList(rNewPg),
    1427                 :         27 :     pUndoGroup(NULL)
    1428                 :            : {
    1429                 :         27 :     bItsMine = sal_True;
    1430                 :            : 
    1431                 :            :     // now remember the master page relationships
    1432         [ +  + ]:         27 :     if(mrPage.IsMasterPage())
    1433                 :            :     {
    1434         [ +  - ]:          4 :         sal_uInt16 nPageAnz(rMod.GetPageCount());
    1435                 :            : 
    1436         [ +  + ]:         16 :         for(sal_uInt16 nPageNum2(0); nPageNum2 < nPageAnz; nPageNum2++)
    1437                 :            :         {
    1438         [ +  - ]:         12 :             SdrPage* pDrawPage = rMod.GetPage(nPageNum2);
    1439                 :            : 
    1440         [ +  - ]:         12 :             if(pDrawPage->TRG_HasMasterPage())
    1441                 :            :             {
    1442         [ +  - ]:         12 :                 SdrPage& rMasterPage = pDrawPage->TRG_GetMasterPage();
    1443                 :            : 
    1444         [ -  + ]:         12 :                 if(&mrPage == &rMasterPage)
    1445                 :            :                 {
    1446         [ #  # ]:          0 :                     if(!pUndoGroup)
    1447                 :            :                     {
    1448 [ #  # ][ #  # ]:          0 :                         pUndoGroup = new SdrUndoGroup(rMod);
    1449                 :            :                     }
    1450                 :            : 
    1451 [ #  # ][ #  # ]:          0 :                     pUndoGroup->AddAction(rMod.GetSdrUndoFactory().CreateUndoPageRemoveMasterPage(*pDrawPage));
                 [ #  # ]
    1452                 :            :                 }
    1453                 :            :             }
    1454                 :            :         }
    1455                 :            :     }
    1456                 :         27 : }
    1457                 :            : 
    1458                 :         27 : SdrUndoDelPage::~SdrUndoDelPage()
    1459                 :            : {
    1460         [ -  + ]:         27 :     if (pUndoGroup!=NULL) {
    1461 [ #  # ][ #  # ]:          0 :         delete pUndoGroup;
    1462                 :            :     }
    1463         [ -  + ]:         54 : }
    1464                 :            : 
    1465                 :          0 : void SdrUndoDelPage::Undo()
    1466                 :            : {
    1467                 :          0 :     ImpInsertPage(nPageNum);
    1468         [ #  # ]:          0 :     if (pUndoGroup!=NULL) { // recover master page relationships
    1469                 :          0 :         pUndoGroup->Undo();
    1470                 :            :     }
    1471                 :            :     DBG_ASSERT(bItsMine,"UndoDeletePage: mrPage does not belong to UndoAction.");
    1472                 :          0 :     bItsMine=sal_False;
    1473                 :          0 : }
    1474                 :            : 
    1475                 :          0 : void SdrUndoDelPage::Redo()
    1476                 :            : {
    1477                 :          0 :     ImpRemovePage(nPageNum);
    1478                 :            :     // master page relations are dissolved automatically
    1479                 :            :     DBG_ASSERT(!bItsMine,"RedoDeletePage: mrPage already belongs to UndoAction.");
    1480                 :          0 :     bItsMine=sal_True;
    1481                 :          0 : }
    1482                 :            : 
    1483                 :          8 : rtl::OUString SdrUndoDelPage::GetComment() const
    1484                 :            : {
    1485         [ +  - ]:          8 :     XubString aStr;
    1486         [ +  - ]:          8 :     ImpTakeDescriptionStr(STR_UndoDelPage,aStr,0,sal_False);
    1487 [ +  - ][ +  - ]:          8 :     return aStr;
    1488                 :            : }
    1489                 :            : 
    1490                 :          0 : XubString SdrUndoDelPage::GetSdrRepeatComment(SdrView& /*rView*/) const
    1491                 :            : {
    1492                 :          0 :     XubString aStr;
    1493         [ #  # ]:          0 :     ImpTakeDescriptionStr(STR_UndoDelPage,aStr,0,sal_False);
    1494                 :          0 :     return aStr;
    1495                 :            : }
    1496                 :            : 
    1497                 :          0 : void SdrUndoDelPage::SdrRepeat(SdrView& /*rView*/)
    1498                 :            : {
    1499                 :          0 : }
    1500                 :            : 
    1501                 :          0 : bool SdrUndoDelPage::CanSdrRepeat(SdrView& /*rView*/) const
    1502                 :            : {
    1503                 :          0 :     return false;
    1504                 :            : }
    1505                 :            : 
    1506                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
    1507                 :            : 
    1508                 :          0 : void SdrUndoNewPage::Undo()
    1509                 :            : {
    1510                 :          0 :     ImpRemovePage(nPageNum);
    1511                 :            :     DBG_ASSERT(!bItsMine,"UndoNewPage: mrPage already belongs to UndoAction.");
    1512                 :          0 :     bItsMine=sal_True;
    1513                 :          0 : }
    1514                 :            : 
    1515                 :          0 : void SdrUndoNewPage::Redo()
    1516                 :            : {
    1517                 :          0 :     ImpInsertPage(nPageNum);
    1518                 :            :     DBG_ASSERT(bItsMine,"RedoNewPage: mrPage does not belong to UndoAction.");
    1519                 :          0 :     bItsMine=sal_False;
    1520                 :          0 : }
    1521                 :            : 
    1522                 :          0 : rtl::OUString SdrUndoNewPage::GetComment() const
    1523                 :            : {
    1524         [ #  # ]:          0 :     XubString aStr;
    1525         [ #  # ]:          0 :     ImpTakeDescriptionStr(STR_UndoNewPage,aStr,0,sal_False);
    1526 [ #  # ][ #  # ]:          0 :     return aStr;
    1527                 :            : }
    1528                 :            : 
    1529                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
    1530                 :            : 
    1531                 :          0 : rtl::OUString SdrUndoCopyPage::GetComment() const
    1532                 :            : {
    1533         [ #  # ]:          0 :     XubString aStr;
    1534         [ #  # ]:          0 :     ImpTakeDescriptionStr(STR_UndoCopPage,aStr,0,sal_False);
    1535 [ #  # ][ #  # ]:          0 :     return aStr;
    1536                 :            : }
    1537                 :            : 
    1538                 :          0 : XubString SdrUndoCopyPage::GetSdrRepeatComment(SdrView& /*rView*/) const
    1539                 :            : {
    1540                 :          0 :     XubString aStr;
    1541         [ #  # ]:          0 :     ImpTakeDescriptionStr(STR_UndoCopPage,aStr,0,sal_False);
    1542                 :          0 :     return aStr;
    1543                 :            : }
    1544                 :            : 
    1545                 :          0 : void SdrUndoCopyPage::SdrRepeat(SdrView& /*rView*/)
    1546                 :            : {
    1547                 :            : 
    1548                 :          0 : }
    1549                 :            : 
    1550                 :          0 : bool SdrUndoCopyPage::CanSdrRepeat(SdrView& /*rView*/) const
    1551                 :            : {
    1552                 :          0 :     return false;
    1553                 :            : }
    1554                 :            : 
    1555                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
    1556                 :            : 
    1557                 :          0 : void SdrUndoSetPageNum::Undo()
    1558                 :            : {
    1559                 :          0 :     ImpMovePage(nNewPageNum,nOldPageNum);
    1560                 :          0 : }
    1561                 :            : 
    1562                 :          0 : void SdrUndoSetPageNum::Redo()
    1563                 :            : {
    1564                 :          0 :     ImpMovePage(nOldPageNum,nNewPageNum);
    1565                 :          0 : }
    1566                 :            : 
    1567                 :          0 : rtl::OUString SdrUndoSetPageNum::GetComment() const
    1568                 :            : {
    1569         [ #  # ]:          0 :     XubString aStr;
    1570         [ #  # ]:          0 :     ImpTakeDescriptionStr(STR_UndoMovPage,aStr,0,sal_False);
    1571 [ #  # ][ #  # ]:          0 :     return aStr;
    1572                 :            : }
    1573                 :            : 
    1574                 :          0 : SdrUndoPageMasterPage::SdrUndoPageMasterPage(SdrPage& rChangedPage)
    1575                 :            : :   SdrUndoPage(rChangedPage),
    1576                 :          0 :     mbOldHadMasterPage(mrPage.TRG_HasMasterPage())
    1577                 :            : {
    1578                 :            :     // get current state from page
    1579         [ #  # ]:          0 :     if(mbOldHadMasterPage)
    1580                 :            :     {
    1581         [ #  # ]:          0 :         maOldSet = mrPage.TRG_GetMasterPageVisibleLayers();
    1582 [ #  # ][ #  # ]:          0 :         maOldMasterPageNumber = mrPage.TRG_GetMasterPage().GetPageNum();
    1583                 :            :     }
    1584                 :          0 : }
    1585                 :            : 
    1586                 :          0 : SdrUndoPageMasterPage::~SdrUndoPageMasterPage()
    1587                 :            : {
    1588         [ #  # ]:          0 : }
    1589                 :            : 
    1590                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
    1591                 :            : 
    1592                 :          0 : SdrUndoPageRemoveMasterPage::SdrUndoPageRemoveMasterPage(SdrPage& rChangedPage)
    1593                 :          0 : :   SdrUndoPageMasterPage(rChangedPage)
    1594                 :            : {
    1595                 :          0 : }
    1596                 :            : 
    1597                 :          0 : void SdrUndoPageRemoveMasterPage::Undo()
    1598                 :            : {
    1599         [ #  # ]:          0 :     if(mbOldHadMasterPage)
    1600                 :            :     {
    1601                 :          0 :         mrPage.TRG_SetMasterPage(*mrPage.GetModel()->GetMasterPage(maOldMasterPageNumber));
    1602                 :          0 :         mrPage.TRG_SetMasterPageVisibleLayers(maOldSet);
    1603                 :            :     }
    1604                 :          0 : }
    1605                 :            : 
    1606                 :          0 : void SdrUndoPageRemoveMasterPage::Redo()
    1607                 :            : {
    1608                 :          0 :     mrPage.TRG_ClearMasterPage();
    1609                 :          0 : }
    1610                 :            : 
    1611                 :          0 : rtl::OUString SdrUndoPageRemoveMasterPage::GetComment() const
    1612                 :            : {
    1613         [ #  # ]:          0 :     XubString aStr;
    1614         [ #  # ]:          0 :     ImpTakeDescriptionStr(STR_UndoDelPageMasterDscr,aStr,0,sal_False);
    1615 [ #  # ][ #  # ]:          0 :     return aStr;
    1616                 :            : }
    1617                 :            : 
    1618                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
    1619                 :            : 
    1620                 :          0 : SdrUndoPageChangeMasterPage::SdrUndoPageChangeMasterPage(SdrPage& rChangedPage)
    1621                 :            : :   SdrUndoPageMasterPage(rChangedPage),
    1622                 :          0 :     mbNewHadMasterPage(sal_False)
    1623                 :            : {
    1624                 :          0 : }
    1625                 :            : 
    1626                 :          0 : void SdrUndoPageChangeMasterPage::Undo()
    1627                 :            : {
    1628                 :            :     // remember values from new page
    1629         [ #  # ]:          0 :     if(mrPage.TRG_HasMasterPage())
    1630                 :            :     {
    1631                 :          0 :         mbNewHadMasterPage = sal_True;
    1632                 :          0 :         maNewSet = mrPage.TRG_GetMasterPageVisibleLayers();
    1633                 :          0 :         maNewMasterPageNumber = mrPage.TRG_GetMasterPage().GetPageNum();
    1634                 :            :     }
    1635                 :            : 
    1636                 :            :     // restore old values
    1637         [ #  # ]:          0 :     if(mbOldHadMasterPage)
    1638                 :            :     {
    1639                 :          0 :         mrPage.TRG_ClearMasterPage();
    1640                 :          0 :         mrPage.TRG_SetMasterPage(*mrPage.GetModel()->GetMasterPage(maOldMasterPageNumber));
    1641                 :          0 :         mrPage.TRG_SetMasterPageVisibleLayers(maOldSet);
    1642                 :            :     }
    1643                 :          0 : }
    1644                 :            : 
    1645                 :          0 : void SdrUndoPageChangeMasterPage::Redo()
    1646                 :            : {
    1647                 :            :     // restore new values
    1648         [ #  # ]:          0 :     if(mbNewHadMasterPage)
    1649                 :            :     {
    1650                 :          0 :         mrPage.TRG_ClearMasterPage();
    1651                 :          0 :         mrPage.TRG_SetMasterPage(*mrPage.GetModel()->GetMasterPage(maNewMasterPageNumber));
    1652                 :          0 :         mrPage.TRG_SetMasterPageVisibleLayers(maNewSet);
    1653                 :            :     }
    1654                 :          0 : }
    1655                 :            : 
    1656                 :          0 : rtl::OUString SdrUndoPageChangeMasterPage::GetComment() const
    1657                 :            : {
    1658         [ #  # ]:          0 :     XubString aStr;
    1659         [ #  # ]:          0 :     ImpTakeDescriptionStr(STR_UndoChgPageMasterDscr,aStr,0,sal_False);
    1660 [ #  # ][ #  # ]:          0 :     return aStr;
    1661                 :            : }
    1662                 :            : 
    1663                 :            : ///////////////////////////////////////////////////////////////////////
    1664         [ -  + ]:        297 : SdrUndoFactory::~SdrUndoFactory(){}
    1665                 :            : // shapes
    1666                 :          0 : SdrUndoAction* SdrUndoFactory::CreateUndoMoveObject( SdrObject& rObject )
    1667                 :            : {
    1668         [ #  # ]:          0 :     return new SdrUndoMoveObj( rObject );
    1669                 :            : }
    1670                 :            : 
    1671                 :          0 : SdrUndoAction* SdrUndoFactory::CreateUndoMoveObject( SdrObject& rObject, const Size& rDist )
    1672                 :            : {
    1673         [ #  # ]:          0 :     return new SdrUndoMoveObj( rObject, rDist );
    1674                 :            : }
    1675                 :            : 
    1676                 :          0 : SdrUndoAction* SdrUndoFactory::CreateUndoGeoObject( SdrObject& rObject )
    1677                 :            : {
    1678         [ #  # ]:          0 :     return new SdrUndoGeoObj( rObject );
    1679                 :            : }
    1680                 :            : 
    1681                 :          0 : SdrUndoAction* SdrUndoFactory::CreateUndoAttrObject( SdrObject& rObject, bool bStyleSheet1, bool bSaveText )
    1682                 :            : {
    1683         [ #  # ]:          0 :     return new SdrUndoAttrObj( rObject, bStyleSheet1 ? sal_True : sal_False, bSaveText ? sal_True : sal_False );
    1684                 :            : }
    1685                 :            : 
    1686                 :         16 : SdrUndoAction* SdrUndoFactory::CreateUndoRemoveObject( SdrObject& rObject, bool bOrdNumDirect )
    1687                 :            : {
    1688         [ +  - ]:         16 :     return new SdrUndoRemoveObj( rObject, bOrdNumDirect ? sal_True : sal_False );
    1689                 :            : }
    1690                 :            : 
    1691                 :         56 : SdrUndoAction* SdrUndoFactory::CreateUndoInsertObject( SdrObject& rObject, bool bOrdNumDirect )
    1692                 :            : {
    1693         [ +  - ]:         56 :     return new SdrUndoInsertObj( rObject, bOrdNumDirect ? sal_True : sal_False );
    1694                 :            : }
    1695                 :            : 
    1696                 :          3 : SdrUndoAction* SdrUndoFactory::CreateUndoDeleteObject( SdrObject& rObject, bool bOrdNumDirect )
    1697                 :            : {
    1698         [ +  - ]:          3 :     return new SdrUndoDelObj( rObject, bOrdNumDirect ? sal_True : sal_False );
    1699                 :            : }
    1700                 :            : 
    1701                 :        157 : SdrUndoAction* SdrUndoFactory::CreateUndoNewObject( SdrObject& rObject, bool bOrdNumDirect )
    1702                 :            : {
    1703         [ +  - ]:        157 :     return new SdrUndoNewObj( rObject, bOrdNumDirect ? sal_True : sal_False );
    1704                 :            : }
    1705                 :            : 
    1706                 :          0 : SdrUndoAction* SdrUndoFactory::CreateUndoCopyObject( SdrObject& rObject, bool bOrdNumDirect )
    1707                 :            : {
    1708         [ #  # ]:          0 :     return new SdrUndoCopyObj( rObject, bOrdNumDirect ? sal_True : sal_False );
    1709                 :            : }
    1710                 :            : 
    1711                 :          0 : SdrUndoAction* SdrUndoFactory::CreateUndoObjectOrdNum( SdrObject& rObject, sal_uInt32 nOldOrdNum1, sal_uInt32 nNewOrdNum1)
    1712                 :            : {
    1713         [ #  # ]:          0 :     return new SdrUndoObjOrdNum( rObject, nOldOrdNum1, nNewOrdNum1 );
    1714                 :            : }
    1715                 :            : 
    1716                 :          0 : SdrUndoAction* SdrUndoFactory::CreateUndoReplaceObject( SdrObject& rOldObject, SdrObject& rNewObject, bool bOrdNumDirect )
    1717                 :            : {
    1718         [ #  # ]:          0 :     return new SdrUndoReplaceObj( rOldObject, rNewObject, bOrdNumDirect ? sal_True : sal_False );
    1719                 :            : }
    1720                 :            : 
    1721                 :          0 : SdrUndoAction* SdrUndoFactory::CreateUndoObjectLayerChange( SdrObject& rObject, SdrLayerID aOldLayer, SdrLayerID aNewLayer )
    1722                 :            : {
    1723         [ #  # ]:          0 :     return new SdrUndoObjectLayerChange( rObject, aOldLayer, aNewLayer );
    1724                 :            : }
    1725                 :            : 
    1726                 :          0 : SdrUndoAction* SdrUndoFactory::CreateUndoObjectSetText( SdrObject& rNewObj, sal_Int32 nText )
    1727                 :            : {
    1728         [ #  # ]:          0 :     return new SdrUndoObjSetText( rNewObj, nText );
    1729                 :            : }
    1730                 :            : 
    1731                 :        115 : SdrUndoAction* SdrUndoFactory::CreateUndoObjectStrAttr( SdrObject& rObject,
    1732                 :            :                                                         SdrUndoObjStrAttr::ObjStrAttrType eObjStrAttrType,
    1733                 :            :                                                         String sOldStr,
    1734                 :            :                                                         String sNewStr )
    1735                 :            : {
    1736         [ +  - ]:        115 :     return new SdrUndoObjStrAttr( rObject, eObjStrAttrType, sOldStr, sNewStr );
    1737                 :            : }
    1738                 :            : 
    1739                 :            : 
    1740                 :            : // layer
    1741                 :          0 : SdrUndoAction* SdrUndoFactory::CreateUndoNewLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel)
    1742                 :            : {
    1743         [ #  # ]:          0 :     return new SdrUndoNewLayer( nLayerNum, rNewLayerAdmin, rNewModel );
    1744                 :            : }
    1745                 :            : 
    1746                 :          2 : SdrUndoAction* SdrUndoFactory::CreateUndoDeleteLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel)
    1747                 :            : {
    1748         [ +  - ]:          2 :     return new SdrUndoDelLayer( nLayerNum, rNewLayerAdmin, rNewModel );
    1749                 :            : }
    1750                 :            : 
    1751                 :          0 : SdrUndoAction* SdrUndoFactory::CreateUndoMoveLayer(sal_uInt16 nLayerNum, SdrLayerAdmin& rNewLayerAdmin, SdrModel& rNewModel, sal_uInt16 nNeuPos1)
    1752                 :            : {
    1753         [ #  # ]:          0 :     return new SdrUndoMoveLayer( nLayerNum, rNewLayerAdmin, rNewModel, nNeuPos1 );
    1754                 :            : }
    1755                 :            : 
    1756                 :            : // page
    1757                 :          8 : SdrUndoAction*  SdrUndoFactory::CreateUndoDeletePage(SdrPage& rPage)
    1758                 :            : {
    1759         [ +  - ]:          8 :     return new SdrUndoDelPage( rPage );
    1760                 :            : }
    1761                 :            : 
    1762                 :          0 : SdrUndoAction* SdrUndoFactory::CreateUndoNewPage(SdrPage& rPage)
    1763                 :            : {
    1764         [ #  # ]:          0 :     return new SdrUndoNewPage( rPage );
    1765                 :            : }
    1766                 :            : 
    1767                 :          0 : SdrUndoAction* SdrUndoFactory::CreateUndoCopyPage(SdrPage& rPage)
    1768                 :            : {
    1769         [ #  # ]:          0 :     return new SdrUndoCopyPage( rPage );
    1770                 :            : }
    1771                 :            : 
    1772                 :          0 : SdrUndoAction* SdrUndoFactory::CreateUndoSetPageNum(SdrPage& rNewPg, sal_uInt16 nOldPageNum1, sal_uInt16 nNewPageNum1)
    1773                 :            : {
    1774         [ #  # ]:          0 :     return new SdrUndoSetPageNum( rNewPg, nOldPageNum1, nNewPageNum1 );
    1775                 :            : }
    1776                 :            :     // master page
    1777                 :          0 : SdrUndoAction* SdrUndoFactory::CreateUndoPageRemoveMasterPage(SdrPage& rChangedPage)
    1778                 :            : {
    1779         [ #  # ]:          0 :     return new SdrUndoPageRemoveMasterPage( rChangedPage );
    1780                 :            : }
    1781                 :            : 
    1782                 :          0 : SdrUndoAction* SdrUndoFactory::CreateUndoPageChangeMasterPage(SdrPage& rChangedPage)
    1783                 :            : {
    1784         [ #  # ]:          0 :     return new SdrUndoPageChangeMasterPage(rChangedPage);
    1785                 :            : }
    1786                 :            : 
    1787                 :            : 
    1788                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10