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