Author: alg
Date: Wed Apr 24 15:18:22 2013
New Revision: 1471471

URL: http://svn.apache.org/r1471471
Log:
i122121 moded automatic StartEnd adaption to svx

Modified:
    openoffice/trunk/main/sd/source/ui/view/drviews2.cxx
    openoffice/trunk/main/svx/source/svdraw/svdedtv1.cxx

Modified: openoffice/trunk/main/sd/source/ui/view/drviews2.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/sd/source/ui/view/drviews2.cxx?rev=1471471&r1=1471470&r2=1471471&view=diff
==============================================================================
--- openoffice/trunk/main/sd/source/ui/view/drviews2.cxx (original)
+++ openoffice/trunk/main/sd/source/ui/view/drviews2.cxx Wed Apr 24 15:18:22 
2013
@@ -174,135 +174,7 @@ void DrawViewShell::FuTemporary(SfxReque
                {
                        if( rReq.GetArgs() )
                        {
-                               sal_Bool bMergeUndo = sal_False;
-                               ::svl::IUndoManager* pUndoManager = 
GetDocSh()->GetUndoManager();
-
-                               // Anpassungen Start/EndWidth #63083#
-                               if(nSId == SID_ATTR_LINE_WIDTH)
-                               {
-                                       SdrObject* pObj = NULL;
-                                       const SdrMarkList& rMarkList = 
mpDrawView->GetMarkedObjectList();
-                                       sal_uLong nCount = 
rMarkList.GetMarkCount();
-                                       const sal_Int32 nNewLineWidth(((const 
XLineWidthItem&)rReq.GetArgs()->Get(XATTR_LINEWIDTH)).GetValue());
-                                       const bool 
bUndo(mpDrawView->IsUndoEnabled());
-
-                                       for (sal_uLong i=0; i<nCount; i++)
-                                       {
-                                               SfxItemSet 
aAttr(GetDoc()->GetPool());
-                                               pObj = 
rMarkList.GetMark(i)->GetMarkedSdrObj();
-                                               
aAttr.Put(pObj->GetMergedItemSet());
-
-                                               sal_Int32 nActLineWidth = 
((const XLineWidthItem&)aAttr.Get(XATTR_LINEWIDTH)).GetValue();
-
-                                               if(nActLineWidth != 
nNewLineWidth)
-                                               {
-                                                       sal_Bool 
bSetItemSet(sal_False);
-
-                                                       // #86265# do this for 
SFX_ITEM_DEFAULT and for SFX_ITEM_SET
-                                                       if(SFX_ITEM_DONTCARE != 
aAttr.GetItemState(XATTR_LINESTARTWIDTH))
-                                                       {
-                                                               sal_Int32 
nValAct = ((const 
XLineStartWidthItem&)aAttr.Get(XATTR_LINESTARTWIDTH)).GetValue();
-                                                               sal_Int32 
nValNew = nValAct + (((nNewLineWidth - nActLineWidth) * 15) / 10);
-                                                               if(nValNew < 0)
-                                                                       nValNew 
= 0;
-                                                               bSetItemSet = 
sal_True;
-                                                               
aAttr.Put(XLineStartWidthItem(nValNew));
-                                                       }
-
-                                                       // #86265# do this for 
SFX_ITEM_DEFAULT and for SFX_ITEM_SET
-                                                       if(SFX_ITEM_DONTCARE != 
aAttr.GetItemState(XATTR_LINEENDWIDTH))
-                                                       {
-                                                               sal_Int32 
nValAct = ((const XLineEndWidthItem&)aAttr.Get(XATTR_LINEENDWIDTH)).GetValue();
-                                                               sal_Int32 
nValNew = nValAct + (((nNewLineWidth - nActLineWidth) * 15) / 10);
-                                                               if(nValNew < 0)
-                                                                       nValNew 
= 0;
-                                                               bSetItemSet = 
sal_True;
-                                                               
aAttr.Put(XLineEndWidthItem(nValNew));
-                                                       }
-
-                                                       if(bSetItemSet)
-                            {
-                                if(bUndo)
-                                {
-                                    if(!bMergeUndo)
-                                    {
-                                                                               
pUndoManager->EnterListAction( String(), String() );
-                                                               
mpDrawView->BegUndo();
-                                                                               
bMergeUndo = sal_True;
-                                    }
-
-                                    
mpDrawView->AddUndo(GetDoc()->GetSdrUndoFactory().CreateUndoAttrObject(*pObj));
-                                }
-
-                                pObj->SetMergedItemSet(aAttr);
-                            }
-                                               }
-                                       }
-
-                    if(bMergeUndo)
-                    {
-                                               mpDrawView->EndUndo();
-                    }
-                               }
-
-                               if (nSId == SID_ATTR_FILL_SHADOW)
-                               {
-                                       // Ggf. werden transparente Objekte 
wei?gefuellt
-                                       SdrObject* pObj = NULL;
-                                       const SdrMarkList& rMarkList = 
mpDrawView->GetMarkedObjectList();
-                                       sal_uLong nCount = 
rMarkList.GetMarkCount();
-                                       const bool bUndo = 
mpDrawView->IsUndoEnabled();
-
-                                       for (sal_uLong i=0; i<nCount; i++)
-                                       {
-                                               SfxItemSet 
aAttr(GetDoc()->GetPool());
-                                               pObj = 
rMarkList.GetMark(i)->GetMarkedSdrObj();
-
-                                               // #i25616#
-                                               if(!pObj->ISA(SdrGrafObj))
-                                               {
-                                                       
aAttr.Put(pObj->GetMergedItemSet());
-
-                                                       const XFillStyleItem& 
rFillStyle = (const XFillStyleItem&) aAttr.Get(XATTR_FILLSTYLE);
-                                                       const XLineStyleItem& 
rLineStyle = (const XLineStyleItem&) aAttr.Get(XATTR_LINESTYLE);
-
-                                                       if(XFILL_NONE == 
rFillStyle.GetValue() && XLINE_NONE == rLineStyle.GetValue())
-                                                       {
-                                                               if( bUndo )
-                                                               {
-                                                                       // 
Vorlage hat keine Fuellung,
-                                                                       // 
daher hart attributieren: Fuellung setzen
-                                                                       if 
(!bMergeUndo)
-                                                                       {
-                                                                               
bMergeUndo = sal_True;
-                                                                               
pUndoManager->EnterListAction( String(), String() );
-                                                                               
mpDrawView->BegUndo();
-                                                                       }
-
-                                                                       
mpDrawView->AddUndo(GetDoc()->GetSdrUndoFactory().CreateUndoAttrObject(*pObj));
-                                                               }
-
-                                                               
aAttr.Put(XFillStyleItem(XFILL_SOLID));
-                                                               
aAttr.Put(XFillColorItem(String(), COL_WHITE));
-
-                                                               
pObj->SetMergedItemSet(aAttr);
-                                                       }
-                                               }
-                                       }
-
-                                       if (bMergeUndo)
-                                       {
-                                               mpDrawView->EndUndo();
-                                       }
-                               }
-
                                mpDrawView->SetAttributes(*rReq.GetArgs());
-
-                               if (bMergeUndo)
-                               {
-                                       pUndoManager->LeaveListAction();
-                               }
-
                                rReq.Done();
                        }
                        else

Modified: openoffice/trunk/main/svx/source/svdraw/svdedtv1.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/svx/source/svdraw/svdedtv1.cxx?rev=1471471&r1=1471470&r2=1471471&view=diff
==============================================================================
--- openoffice/trunk/main/svx/source/svdraw/svdedtv1.cxx (original)
+++ openoffice/trunk/main/svx/source/svdraw/svdedtv1.cxx Wed Apr 24 15:18:22 
2013
@@ -58,6 +58,9 @@
 #include <basegfx/matrix/b2dhommatrix.hxx>
 #include <svx/AffineMatrixItem.hxx>
 #include <basegfx/matrix/b2dhommatrixtools.hxx>
+#include <svx/xlnwtit.hxx>
+#include <svx/xlnstwit.hxx>
+#include <svx/xlnedwit.hxx>
 
 
////////////////////////////////////////////////////////////////////////////////////////////////////
 
////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -1053,6 +1056,16 @@ void SdrEditView::SetAttrToMarked(const 
                // #i38135#
                bool bResetAnimationTimer(false);
 
+        // check if LineWidth is part of the change
+        const bool bLineWidthChange(SFX_ITEM_SET == 
aAttr.GetItemState(XATTR_LINEWIDTH));
+        sal_Int32 nNewLineWidth(0);
+        sal_Int32 nOldLineWidth(0);
+
+        if(bLineWidthChange)
+        {
+            nNewLineWidth = ((const 
XLineWidthItem&)aAttr.Get(XATTR_LINEWIDTH)).GetValue();
+        }
+
                for (sal_uIntPtr nm=0; nm<nMarkAnz; nm++)
                {
                        SdrMark* pM=GetSdrMarkByIndex(nm);
@@ -1097,8 +1110,37 @@ void SdrEditView::SetAttrToMarked(const 
                 aUpdaters.push_back(new E3DModifySceneSnapRectUpdater(pObj));
             }
 
+            if(bLineWidthChange)
+            {
+                nOldLineWidth = ((const 
XLineWidthItem&)pObj->GetMergedItem(XATTR_LINEWIDTH)).GetValue();
+            }
+
             // set attributes at object
-                       pObj->SetMergedItemSetAndBroadcast(aAttr, bReplaceAll);
+            pObj->SetMergedItemSetAndBroadcast(aAttr, bReplaceAll);
+
+            if(bLineWidthChange)
+            {
+                const SfxItemSet& rSet = pObj->GetMergedItemSet();
+
+                if(nOldLineWidth != nNewLineWidth)
+                {
+                    if(SFX_ITEM_DONTCARE != 
rSet.GetItemState(XATTR_LINESTARTWIDTH))
+                    {
+                        const sal_Int32 nValAct(((const 
XLineStartWidthItem&)rSet.Get(XATTR_LINESTARTWIDTH)).GetValue());
+                        const sal_Int32 nValNewStart(std::max((sal_Int32)0, 
nValAct + (((nNewLineWidth - nOldLineWidth) * 15) / 10)));
+
+                        pObj->SetMergedItem(XLineStartWidthItem(nValNewStart));
+                    }
+
+                    if(SFX_ITEM_DONTCARE != 
rSet.GetItemState(XATTR_LINEENDWIDTH))
+                    {
+                        const sal_Int32 nValAct(((const 
XLineEndWidthItem&)rSet.Get(XATTR_LINEENDWIDTH)).GetValue());
+                        const sal_Int32 nValNewEnd(std::max((sal_Int32)0, 
nValAct + (((nNewLineWidth - nOldLineWidth) * 15) / 10)));
+
+                        pObj->SetMergedItem(XLineEndWidthItem(nValNewEnd));
+                    }
+                }
+            }
 
                        if(pObj->ISA(SdrTextObj))
                        {


Reply via email to