oox/source/drawingml/shape.cxx     |   40 ++++++++++++++++++
 sd/qa/unit/data/xml/n762695_1.xml  |    4 -
 sd/qa/unit/data/xml/n820786_0.xml  |    4 -
 sd/qa/unit/data/xml/tdf90338_0.xml |    2 
 sd/qa/unit/data/xml/tdf92001_0.xml |    2 
 sd/source/ui/view/drtxtob1.cxx     |   82 +++++++++++++++++++------------------
 6 files changed, 89 insertions(+), 45 deletions(-)

New commits:
commit 1d9ce0a67a71e51569cd33c26270eeece587a354
Author:     Balazs Varga <[email protected]>
AuthorDate: Sun Oct 13 20:58:17 2024 +0200
Commit:     Gabor Kelemen <[email protected]>
CommitDate: Wed Oct 16 20:19:58 2024 +0200

    tdf#162571 - sd: Text box expands or shrinks on left or right or
    
    both sides, depending on the text alignment. Set the text anchor
    position based on the first paragraph alignment.
    
    WIP: testing...
    
    Change-Id: Ie1588c3eab5dd24eddb20baf342aca57c0dd39fc
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174885
    Reviewed-by: Gabor Kelemen <[email protected]>
    Tested-by: Jenkins
    Tested-by: Gabor Kelemen <[email protected]>

diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx
index 56e04caadbf1..f01c4b90a7a6 100644
--- a/oox/source/drawingml/shape.cxx
+++ b/oox/source/drawingml/shape.cxx
@@ -75,6 +75,7 @@
 #include <com/sun/star/drawing/FillStyle.hpp>
 #include <com/sun/star/drawing/HomogenMatrix3.hpp>
 #include <com/sun/star/drawing/TextVerticalAdjust.hpp>
+#include <com/sun/star/drawing/TextHorizontalAdjust.hpp>
 #include <com/sun/star/drawing/GraphicExportFilter.hpp>
 #include <com/sun/star/drawing/XShapes.hpp>
 #include <com/sun/star/drawing/EnhancedCustomShapeAdjustmentValue.hpp>
@@ -616,6 +617,16 @@ static SdrTextHorzAdjust lcl_convertAdjust( 
ParagraphAdjust eAdjust )
     return SDRTEXTHORZADJUST_LEFT;
 }
 
+static TextHorizontalAdjust lcl_convertTextAdjust(ParagraphAdjust eAdjust)
+{
+    if (eAdjust == ParagraphAdjust_LEFT)
+        return drawing::TextHorizontalAdjust_LEFT;
+    else if (eAdjust == ParagraphAdjust_RIGHT)
+        return drawing::TextHorizontalAdjust_RIGHT;
+    else
+        return drawing::TextHorizontalAdjust_BLOCK;
+}
+
 // LO does not interpret properties in styles belonging to the text content of 
a FontWork shape,
 // but only those in the shape style. This method copies properties from the 
text content styles to
 // the shape style.
@@ -1508,6 +1519,35 @@ Reference< XShape > const & Shape::createAndInsert(
                 }
             }
 
+            // tdf#162571: In case of shapes with TextAutoGrowHeight, PP 
calculates/grow the
+            // shapes size in edit mode (typing) based on the text horizontal 
alignment.
+            // In LO, we simulate it by setting TextHorizontalAdjust based on 
the ParagraphAdjust
+            // of the 1. paragraph
+            // It is not perfect, because we have 1 TextHorizontalAdjust / 1 
shape,
+            // while we can have many ParagraphAdjust / 1 shape
+            if 
(!mpTextBody->getTextProperties().maPropertyMap.hasProperty(PROP_WritingMode)
+                && mpTextBody->getParagraphs().size() > 0)
+            {
+                std::optional<css::style::ParagraphAdjust>& oParaAdjust
+                    = 
mpTextBody->getParagraphs()[0]->getProperties().getParaAdjust();
+
+                bool bAutoHeight = false;
+                Reference< XPropertySetInfo > 
xSetInfo(xSet->getPropertySetInfo());
+                const OUString& rPropName = 
PropertyMap::getPropertyName(PROP_TextAutoGrowHeight);
+                if (xSetInfo.is() && xSetInfo->hasPropertyByName(rPropName))
+                {
+                    uno::Any aTextAutoGrowHeight = 
xSet->getPropertyValue(u"TextAutoGrowHeight"_ustr);
+                    aTextAutoGrowHeight >>= bAutoHeight;
+                }
+
+                if (bAutoHeight && nShapeRotateInclCamera == 0)
+                {
+                    mpTextBody->getTextProperties().maPropertyMap.setProperty(
+                        PROP_TextHorizontalAdjust, lcl_convertTextAdjust(
+                            oParaAdjust ? *oParaAdjust : 
ParagraphAdjust_LEFT));
+                }
+            }
+
             
mpTextBody->getTextProperties().pushTextDistances(Size(aShapeRectHmm.Width, 
aShapeRectHmm.Height));
             aShapeProps.assignUsed( 
mpTextBody->getTextProperties().maPropertyMap );
             // Push char properties as well - specifically useful when this is 
a placeholder
diff --git a/sd/qa/unit/data/xml/n762695_1.xml 
b/sd/qa/unit/data/xml/n762695_1.xml
index 02d3b735da86..8cd404c575be 100644
--- a/sd/qa/unit/data/xml/n762695_1.xml
+++ b/sd/qa/unit/data/xml/n762695_1.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <XShapes>
- <XShape positionX="3175" positionY="7197" sizeX="17991" sizeY="7619" 
type="com.sun.star.drawing.CustomShape" name="Freeform 15" 
fontHeight="24.000000" fontColor="000000" textAutoGrowHeight="false" 
textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" 
textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="250" 
textRightDistance="250" textUpperDistance="125" textLowerDistance="125" 
textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" 
fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="3175" positionY="7197" sizeX="17991" sizeY="7619" 
type="com.sun.star.drawing.CustomShape" name="Freeform 15" 
fontHeight="24.000000" fontColor="000000" textAutoGrowHeight="false" 
textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" 
textHorizontalAdjust="LEFT" textVerticalAdjust="CENTER" textLeftDistance="250" 
textRightDistance="250" textUpperDistance="125" textLowerDistance="125" 
textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" 
fillTransparence="0" fillTransparenceGradientName="">
   <FillTransparenceGradient style="LINEAR" startColor="000000" 
endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" 
startIntensity="100" endIntensity="100" stepCount="0"/>
   <FillGradient style="LINEAR" startColor="3465a4" endColor="ffffff" angle="0" 
border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" 
stepCount="0"/>
   <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
@@ -85,7 +85,7 @@
    </PropertyValue>
   </CustomShapeGeometry>
  </XShape>
- <XShape positionX="3387" positionY="4229" sizeX="17682" sizeY="9528" 
type="com.sun.star.drawing.CustomShape" name="Freeform 16" 
fontHeight="24.000000" fontColor="000000" textAutoGrowHeight="false" 
textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" 
textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="250" 
textRightDistance="250" textUpperDistance="125" textLowerDistance="125" 
textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" 
fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="3387" positionY="4229" sizeX="17682" sizeY="9528" 
type="com.sun.star.drawing.CustomShape" name="Freeform 16" 
fontHeight="24.000000" fontColor="000000" textAutoGrowHeight="false" 
textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" 
textHorizontalAdjust="LEFT" textVerticalAdjust="CENTER" textLeftDistance="250" 
textRightDistance="250" textUpperDistance="125" textLowerDistance="125" 
textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="NONE" fillColor="729fcf" 
fillTransparence="0" fillTransparenceGradientName="">
   <FillTransparenceGradient style="LINEAR" startColor="000000" 
endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" 
startIntensity="100" endIntensity="100" stepCount="0"/>
   <FillGradient style="LINEAR" startColor="3465a4" endColor="ffffff" angle="0" 
border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" 
stepCount="0"/>
   <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
diff --git a/sd/qa/unit/data/xml/n820786_0.xml 
b/sd/qa/unit/data/xml/n820786_0.xml
index 4b2e06b3f347..fee4d9667e52 100644
--- a/sd/qa/unit/data/xml/n820786_0.xml
+++ b/sd/qa/unit/data/xml/n820786_0.xml
@@ -64,7 +64,7 @@
  </XShape>
  <XShape positionX="20904" positionY="11701" sizeX="846" sizeY="1057" 
type="com.sun.star.drawing.GroupShape" name="Group 43">
   <XShapes>
-   <XShape positionX="21750" positionY="12758" sizeX="846" sizeY="1057" 
type="com.sun.star.drawing.CustomShape" name="Oval 44" fontHeight="24.000000" 
fontColor="000000" textAutoGrowHeight="false" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" 
textVerticalAdjust="CENTER" textLeftDistance="250" textRightDistance="250" 
textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" 
textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" 
textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="HATCH" fillColor="ffffff" 
fillTransparence="0" fillTransparenceGradientName="">
+   <XShape positionX="21750" positionY="12758" sizeX="846" sizeY="1057" 
type="com.sun.star.drawing.CustomShape" name="Oval 44" fontHeight="24.000000" 
fontColor="000000" textAutoGrowHeight="false" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" 
textVerticalAdjust="CENTER" textLeftDistance="250" textRightDistance="250" 
textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" 
textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" 
textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="HATCH" fillColor="ffffff" 
fillTransparence="0" fillTransparenceGradientName="">
     <FillTransparenceGradient style="LINEAR" startColor="000000" 
endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" 
startIntensity="100" endIntensity="100" stepCount="0"/>
     <FillGradient style="LINEAR" startColor="3465a4" endColor="ffffff" 
angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" 
endIntensity="100" stepCount="0"/>
     <FillHatch style="DOUBLE" color="000000" distance="175" angle="450"/>
@@ -148,7 +148,7 @@
      </PropertyValue>
     </CustomShapeGeometry>
    </XShape>
-   <XShape positionX="21750" positionY="12758" sizeX="211" sizeY="1057" 
type="com.sun.star.drawing.CustomShape" name="Oval 45" fontHeight="24.000000" 
fontColor="000000" textAutoGrowHeight="false" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" 
textVerticalAdjust="CENTER" textLeftDistance="250" textRightDistance="250" 
textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" 
textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" 
textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="HATCH" fillColor="ffffff" 
fillTransparence="0" fillTransparenceGradientName="">
+   <XShape positionX="21750" positionY="12758" sizeX="211" sizeY="1057" 
type="com.sun.star.drawing.CustomShape" name="Oval 45" fontHeight="24.000000" 
fontColor="000000" textAutoGrowHeight="false" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" 
textVerticalAdjust="CENTER" textLeftDistance="250" textRightDistance="250" 
textUpperDistance="125" textLowerDistance="125" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" 
textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" 
textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="HATCH" fillColor="ffffff" 
fillTransparence="0" fillTransparenceGradientName="">
     <FillTransparenceGradient style="LINEAR" startColor="000000" 
endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" 
startIntensity="100" endIntensity="100" stepCount="0"/>
     <FillGradient style="LINEAR" startColor="3465a4" endColor="ffffff" 
angle="0" border="0" xOffset="50" yOffset="50" startIntensity="100" 
endIntensity="100" stepCount="0"/>
     <FillHatch style="DOUBLE" color="000000" distance="175" angle="450"/>
diff --git a/sd/qa/unit/data/xml/tdf90338_0.xml 
b/sd/qa/unit/data/xml/tdf90338_0.xml
index 741d6ca08071..792eca6f4cf1 100644
--- a/sd/qa/unit/data/xml/tdf90338_0.xml
+++ b/sd/qa/unit/data/xml/tdf90338_0.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <XShapes>
- <XShape positionX="5498" positionY="2715" sizeX="11630" sizeY="8623" 
type="com.sun.star.drawing.CustomShape" name="Freeform 3" 
fontHeight="11.000000" fontColor="000000" textAutoGrowHeight="false" 
textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" 
textHorizontalAdjust="BLOCK" textVerticalAdjust="CENTER" textLeftDistance="250" 
textRightDistance="250" textUpperDistance="125" textLowerDistance="125" 
textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="SOLID" fillColor="e7e6e6" 
fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="5498" positionY="2715" sizeX="11630" sizeY="8623" 
type="com.sun.star.drawing.CustomShape" name="Freeform 3" 
fontHeight="11.000000" fontColor="000000" textAutoGrowHeight="false" 
textAutoGrowWidth="false" textContourFrame="false" textFitToSize="NONE" 
textHorizontalAdjust="LEFT" textVerticalAdjust="CENTER" textLeftDistance="250" 
textRightDistance="250" textUpperDistance="125" textLowerDistance="125" 
textMaximumFrameHeight="0" textMaximumFrameWidth="0" textMinimumFrameHeight="0" 
textMinimumFrameWidth="0" textAnimationAmount="0" textAnimationCount="0" 
textAnimationDelay="0" textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="SOLID" fillColor="e7e6e6" 
fillTransparence="0" fillTransparenceGradientName="">
   <FillTransparenceGradient style="LINEAR" startColor="000000" 
endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" 
startIntensity="100" endIntensity="100" stepCount="0"/>
   <FillGradient style="LINEAR" startColor="3465a4" endColor="ffffff" angle="0" 
border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" 
stepCount="0"/>
   <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
diff --git a/sd/qa/unit/data/xml/tdf92001_0.xml 
b/sd/qa/unit/data/xml/tdf92001_0.xml
index d67952eb1fe5..d5c59dd7ff0e 100644
--- a/sd/qa/unit/data/xml/tdf92001_0.xml
+++ b/sd/qa/unit/data/xml/tdf92001_0.xml
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <XShapes>
- <XShape positionX="4826" positionY="4826" sizeX="19557" sizeY="12953" 
type="com.sun.star.drawing.CustomShape" fontHeight="18.000000" 
fontColor="000000" textAutoGrowHeight="false" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="BLOCK" 
textVerticalAdjust="CENTER" textLeftDistance="325" textRightDistance="325" 
textUpperDistance="200" textLowerDistance="200" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" 
textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" 
textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="SOLID" fillColor="729fcf" 
fillTransparence="0" fillTransparenceGradientName="">
+ <XShape positionX="4826" positionY="4826" sizeX="19557" sizeY="12953" 
type="com.sun.star.drawing.CustomShape" fontHeight="18.000000" 
fontColor="000000" textAutoGrowHeight="false" textAutoGrowWidth="false" 
textContourFrame="false" textFitToSize="NONE" textHorizontalAdjust="LEFT" 
textVerticalAdjust="CENTER" textLeftDistance="325" textRightDistance="325" 
textUpperDistance="200" textLowerDistance="200" textMaximumFrameHeight="0" 
textMaximumFrameWidth="0" textMinimumFrameHeight="0" textMinimumFrameWidth="0" 
textAnimationAmount="0" textAnimationCount="0" textAnimationDelay="0" 
textAnimationDirection="LEFT" textAnimationKind="NONE" 
textAnimationStartInside="false" textAnimationStopInside="false" 
textWritingMode="LR_TB" fillStyle="SOLID" fillColor="729fcf" 
fillTransparence="0" fillTransparenceGradientName="">
   <FillTransparenceGradient style="LINEAR" startColor="000000" 
endColor="000000" angle="0" border="0" xOffset="50" yOffset="50" 
startIntensity="100" endIntensity="100" stepCount="0"/>
   <FillGradient style="LINEAR" startColor="3465a4" endColor="ffffff" angle="0" 
border="0" xOffset="50" yOffset="50" startIntensity="100" endIntensity="100" 
stepCount="0"/>
   <FillHatch style="SINGLE" color="3465a4" distance="20" angle="0"/>
diff --git a/sd/source/ui/view/drtxtob1.cxx b/sd/source/ui/view/drtxtob1.cxx
index 7a4e49e6177b..5229e8555aa2 100644
--- a/sd/source/ui/view/drtxtob1.cxx
+++ b/sd/source/ui/view/drtxtob1.cxx
@@ -512,6 +512,8 @@ void TextObjectBar::ExecuteImpl(ViewShell* mpViewShell, 
::sd::View* mpView, SfxR
 
             if( !pArgs )
             {
+                SvxAdjust eAdjst;
+                SdrTextHorzAdjust eAnchor;
                 switch ( nSlot )
                 {
                     case SID_ATTR_CHAR_WEIGHT:
@@ -601,26 +603,25 @@ void TextObjectBar::ExecuteImpl(ViewShell* mpViewShell, 
::sd::View* mpView, SfxR
                     }
                     break;
 
-                    case SID_ATTR_PARA_ADJUST_LEFT:
+                    case SID_ATTR_PARA_ADJUST_LEFT:  eAdjst = SvxAdjust::Left; 
 eAnchor = SDRTEXTHORZADJUST_LEFT;  goto SET_ADJUST;
+                    case SID_ATTR_PARA_ADJUST_CENTER:  eAdjst = 
SvxAdjust::Center;  eAnchor = SDRTEXTHORZADJUST_CENTER;  goto SET_ADJUST;
+                    case SID_ATTR_PARA_ADJUST_RIGHT:  eAdjst = 
SvxAdjust::Right;  eAnchor = SDRTEXTHORZADJUST_RIGHT;  goto SET_ADJUST;
+                    case SID_ATTR_PARA_ADJUST_BLOCK:  eAdjst = 
SvxAdjust::Block;  eAnchor = SDRTEXTHORZADJUST_BLOCK;  goto SET_ADJUST;
+SET_ADJUST:
                     {
-                        aNewAttr.Put( SvxAdjustItem( SvxAdjust::Left, 
EE_PARA_JUST ) );
-                    }
-                    break;
-                    case SID_ATTR_PARA_ADJUST_CENTER:
-                    {
-                        aNewAttr.Put( SvxAdjustItem( SvxAdjust::Center, 
EE_PARA_JUST ) );
-                    }
-                    break;
-                    case SID_ATTR_PARA_ADJUST_RIGHT:
-                    {
-                        aNewAttr.Put( SvxAdjustItem( SvxAdjust::Right, 
EE_PARA_JUST ) );
-                    }
-                    break;
-                    case SID_ATTR_PARA_ADJUST_BLOCK:
-                    {
-                        aNewAttr.Put( SvxAdjustItem( SvxAdjust::Block, 
EE_PARA_JUST ) );
+                        aNewAttr.Put(SvxAdjustItem(eAdjst, EE_PARA_JUST));
+                        // set anchor
+                        ESelection aSel = pOLV->GetSelection();
+                        aSel.Adjust();
+                        sal_Int32 nStartPara = aSel.nStartPara;
+                        if (!aSel.HasRange())
+                            nStartPara = 0;
+
+                        if (nStartPara == 0)
+                            aNewAttr.Put(SdrTextHorzAdjustItem(eAnchor));
                     }
                     break;
+
                     case SID_ATTR_PARA_LINESPACE_10:
                     {
                         SvxLineSpacingItem aItem( LINE_SPACE_DEFAULT_HEIGHT, 
EE_PARA_SBL );
@@ -746,29 +747,32 @@ void TextObjectBar::ExecuteImpl(ViewShell* mpViewShell, 
::sd::View* mpView, SfxR
                 nSlot == SID_ATTR_PARA_ADJUST_RIGHT ||
                 nSlot == SID_ATTR_PARA_ADJUST_BLOCK)
             {
-                switch( nSlot )
-                {
-                case SID_ATTR_PARA_ADJUST_LEFT:
-                    {
-                        aNewAttr.Put( SvxAdjustItem( SvxAdjust::Left, 
EE_PARA_JUST ) );
-                    }
-                    break;
-                case SID_ATTR_PARA_ADJUST_CENTER:
-                    {
-                        aNewAttr.Put( SvxAdjustItem( SvxAdjust::Center, 
EE_PARA_JUST ) );
-                    }
-                    break;
-                case SID_ATTR_PARA_ADJUST_RIGHT:
-                    {
-                        aNewAttr.Put( SvxAdjustItem( SvxAdjust::Right, 
EE_PARA_JUST ) );
-                    }
-                    break;
-                case SID_ATTR_PARA_ADJUST_BLOCK:
-                    {
-                        aNewAttr.Put( SvxAdjustItem( SvxAdjust::Block, 
EE_PARA_JUST ) );
-                    }
-                    break;
+                SvxAdjust eAdjst;
+                SdrTextHorzAdjust eAnchor;
+                if (nSlot == SID_ATTR_PARA_ADJUST_LEFT) {
+                    eAdjst = SvxAdjust::Left;  eAnchor = 
SDRTEXTHORZADJUST_LEFT;
+                }
+                else if (nSlot == SID_ATTR_PARA_ADJUST_CENTER) {
+                    eAdjst = SvxAdjust::Center;  eAnchor = 
SDRTEXTHORZADJUST_CENTER;
                 }
+                else if (nSlot == SID_ATTR_PARA_ADJUST_RIGHT) {
+                    eAdjst = SvxAdjust::Right;  eAnchor = 
SDRTEXTHORZADJUST_RIGHT;
+                }
+                else {
+                    eAdjst = SvxAdjust::Block;  eAnchor = 
SDRTEXTHORZADJUST_BLOCK;
+                }
+
+                aNewAttr.Put(SvxAdjustItem(eAdjst, EE_PARA_JUST));
+                // set anchor
+                ESelection aSel = pOLV->GetSelection();
+                aSel.Adjust();
+                sal_Int32 nStartPara = aSel.nStartPara;
+                if (!aSel.HasRange())
+                    nStartPara = 0;
+
+                if (nStartPara == 0)
+                    aNewAttr.Put(SdrTextHorzAdjustItem(eAnchor));
+
                 rReq.Done( aNewAttr );
                 pArgs = rReq.GetArgs();
             }

Reply via email to