View | Details | Raw Unified | Return to issue 101269
Collapse All | Expand All

(-)sd/source/ui/view/drviews3.cxx (-1 / +65 lines)
Lines 40-45 Link Here
40
#include <svx/protitem.hxx>
40
#include <svx/protitem.hxx>
41
#include <svx/frmdiritem.hxx>
41
#include <svx/frmdiritem.hxx>
42
#include <svx/ruler.hxx>
42
#include <svx/ruler.hxx>
43
#include <svx/numitem.hxx>
43
#ifndef _SVX_RULERITEM_HXX
44
#ifndef _SVX_RULERITEM_HXX
44
#include <svx/rulritem.hxx>
45
#include <svx/rulritem.hxx>
45
#endif
46
#endif
Lines 692-703 void DrawViewShell::ExecRuler(SfxRequest& rReq) Link Here
692
				const SvxLRSpaceItem& rItem = (const SvxLRSpaceItem&)
693
				const SvxLRSpaceItem& rItem = (const SvxLRSpaceItem&)
693
							pArgs->Get( nId );
694
							pArgs->Get( nId );
694
695
695
                SfxItemSet aEditAttr( GetPool(), EE_PARA_LRSPACE, EE_PARA_LRSPACE );
696
                static const USHORT aWhichTable[]=
697
                {
698
                    EE_PARA_OUTLLEVEL, EE_PARA_OUTLLEVEL,
699
                    EE_PARA_LRSPACE, EE_PARA_LRSPACE,
700
                    EE_PARA_NUMBULLET, EE_PARA_NUMBULLET,
701
                    0, 0
702
                };
703
704
				SfxItemSet aEditAttr( GetDoc()->GetPool(),
705
                                      aWhichTable );
706
				mpDrawView->GetAttributes( aEditAttr );
696
707
697
                nId = EE_PARA_LRSPACE;
708
                nId = EE_PARA_LRSPACE;
698
				SvxLRSpaceItem aLRSpaceItem( rItem.GetLeft(),
709
				SvxLRSpaceItem aLRSpaceItem( rItem.GetLeft(),
699
						rItem.GetRight(), rItem.GetTxtLeft(),
710
						rItem.GetRight(), rItem.GetTxtLeft(),
700
						rItem.GetTxtFirstLineOfst(), nId );
711
						rItem.GetTxtFirstLineOfst(), nId );
712
713
                const INT16 nOutlineLevel = ((const SfxInt16Item&)aEditAttr.Get( EE_PARA_OUTLLEVEL )).GetValue();
714
                const SvxLRSpaceItem& rOrigLRSpaceItem = (const SvxLRSpaceItem&) aEditAttr.Get( EE_PARA_LRSPACE );
715
                const SvxNumBulletItem& rNumBulletItem = (const SvxNumBulletItem&) aEditAttr.Get( EE_PARA_NUMBULLET );
716
                if( nOutlineLevel != -1 && 
717
                    rNumBulletItem.GetNumRule() &&
718
                    rNumBulletItem.GetNumRule()->GetLevelCount() > nOutlineLevel )
719
                {
720
                    const SvxNumberFormat& rFormat = rNumBulletItem.GetNumRule()->GetLevel(nOutlineLevel);
721
                    SvxNumberFormat aFormat(rFormat);
722
723
                    // left margin always controls number format
724
                    aFormat.SetAbsLSpace(rItem.GetTxtLeft() - rOrigLRSpaceItem.GetTxtLeft());
725
                    aLRSpaceItem.SetTxtLeft(rOrigLRSpaceItem.GetTxtLeft());
726
727
                    // negative indent goes to the number format,
728
                    // positive to the lrSpace item
729
                    if( rItem.GetTxtFirstLineOfst() < 0 )
730
                    {
731
                        aFormat.SetFirstLineOffset(
732
                            rItem.GetTxtFirstLineOfst() 
733
                            - rOrigLRSpaceItem.GetTxtFirstLineOfst() 
734
                            + aFormat.GetCharTextDistance());
735
                        aLRSpaceItem.SetTxtFirstLineOfst(0);
736
                    }
737
                    else
738
                    {
739
                        aFormat.SetFirstLineOffset(0);
740
                        aLRSpaceItem.SetTxtFirstLineOfst(
741
                            rItem.GetTxtFirstLineOfst()
742
                            - aFormat.GetFirstLineOffset()
743
                            + aFormat.GetCharTextDistance());
744
                    }
745
746
                    SvxNumBulletItem aNumBulletItem(rNumBulletItem);
747
                    aNumBulletItem.GetNumRule()->SetLevel(nOutlineLevel,aFormat);
748
                    aEditAttr.Put( aNumBulletItem );
749
                }
750
701
				aEditAttr.Put( aLRSpaceItem );
751
				aEditAttr.Put( aLRSpaceItem );
702
				mpDrawView->SetAttributes( aEditAttr );
752
				mpDrawView->SetAttributes( aEditAttr );
703
753
Lines 785-790 void DrawViewShell::GetRulerState(SfxItemSet& rSet) Link Here
785
					SvxLRSpaceItem aLRSpaceItem( rLRSpaceItem.GetLeft(),
835
					SvxLRSpaceItem aLRSpaceItem( rLRSpaceItem.GetLeft(),
786
							rLRSpaceItem.GetRight(), rLRSpaceItem.GetTxtLeft(),
836
							rLRSpaceItem.GetRight(), rLRSpaceItem.GetTxtLeft(),
787
							rLRSpaceItem.GetTxtFirstLineOfst(), nId );
837
							rLRSpaceItem.GetTxtFirstLineOfst(), nId );
838
839
                    const INT16 nOutlineLevel = ((const SfxInt16Item&)aEditAttr.Get( EE_PARA_OUTLLEVEL )).GetValue();
840
                    const SvxNumBulletItem& rNumBulletItem = (const SvxNumBulletItem&) aEditAttr.Get( EE_PARA_NUMBULLET );
841
                    if( nOutlineLevel != -1 && 
842
                        rNumBulletItem.GetNumRule() &&
843
                        rNumBulletItem.GetNumRule()->GetLevelCount() > nOutlineLevel )
844
                    {
845
                        const SvxNumberFormat& rFormat = rNumBulletItem.GetNumRule()->GetLevel(nOutlineLevel);
846
                        aLRSpaceItem.SetTxtLeft(rFormat.GetAbsLSpace() + rLRSpaceItem.GetTxtLeft());
847
                        aLRSpaceItem.SetTxtFirstLineOfst(
848
                            rLRSpaceItem.GetTxtFirstLineOfst() + rFormat.GetFirstLineOffset() 
849
                            - rFormat.GetCharTextDistance());
850
                    }
851
788
					rSet.Put( aLRSpaceItem );
852
					rSet.Put( aLRSpaceItem );
789
853
790
					Point aPos( aPagePos + maMarkRect.TopLeft() );
854
					Point aPos( aPagePos + maMarkRect.TopLeft() );

Return to issue 101269