[Libreoffice-commits] .: Branch 'libreoffice-3-6' - 2 commits - oox/inc oox/source sw/source writerfilter/source

Miklos Vajna vmiklos at kemper.freedesktop.org
Fri Jun 8 06:49:11 PDT 2012


 oox/inc/oox/vml/vmlshape.hxx                      |    1 +
 oox/source/token/properties.txt                   |    1 +
 oox/source/vml/vmlshape.cxx                       |    3 +++
 oox/source/vml/vmlshapecontext.cxx                |    1 +
 sw/source/core/text/porlay.cxx                    |   11 ++++++++++-
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |    2 +-
 6 files changed, 17 insertions(+), 2 deletions(-)

New commits:
commit fa7171f6a98eec8651de0e9f9ea07e9620861242
Author: Miklos Vajna <vmiklos at suse.cz>
Date:   Fri Jun 8 12:50:59 2012 +0200

    n#757905 SwLineLayout::CalcLine: improve line height calculation
    
    Word vs. Writer difference: if the only portion in a line is a fly
    (as-character shape) and the height of the fly is smaller than the
    height of the line, then Writer sets the height to the height of the
    fly. Word takes the max of the two values.
    
    We already have IgnoreTabsAndBlanksForLineCalculation for Word compat
    wrt. line height calculation, use that here as well.
    
    Change-Id: Iebe1bc697d6f19a03d15a1e5fd25ab4d5f4898fd
    (cherry picked from commits 563df5d0c3c696912f211e74dd4dbda1aa720ae7 and
    11a54814be785766d797cc83cfdacd2368ea642c)

diff --git a/sw/source/core/text/porlay.cxx b/sw/source/core/text/porlay.cxx
index 7d8bdee..8589bec 100644
--- a/sw/source/core/text/porlay.cxx
+++ b/sw/source/core/text/porlay.cxx
@@ -351,6 +351,7 @@ void SwLineLayout::CalcLine( SwTxtFormatter &rLine, SwTxtFormatInfo &rInf )
         }
         else
         {
+            KSHORT nLineHeight = Height();
             Init( GetPortion() );
             SwLinePortion *pPos = pPortion;
             SwLinePortion *pLast = this;
@@ -458,7 +459,15 @@ void SwLineLayout::CalcLine( SwTxtFormatter &rLine, SwTxtFormatInfo &rInf )
                     else if( !pPos->IsFlyPortion() )
                     {
                         if( Height() < nPosHeight )
-                            Height( nPosHeight );
+                        {
+                            // Height is set to 0 when Init() is called.
+                            if (bIgnoreBlanksAndTabsForLineHeightCalculation && pPos->GetWhichPor() == POR_FLYCNT)
+                                // Compat flag set: take the line height, if it's larger.
+                                Height(std::max(nPosHeight, nLineHeight));
+                            else
+                                // Just care about the portion height.
+                                Height(nPosHeight);
+                        }
                         if( pPos->IsFlyCntPortion() || ( pPos->IsMultiPortion()
                             && ((SwMultiPortion*)pPos)->HasFlyInCntnt() ) )
                             rLine.SetFlyInCntBase();
commit d6314796499be812004c35b28a65142bc06aa86e
Author: Miklos Vajna <vmiklos at suse.cz>
Date:   Thu Jun 7 10:51:45 2012 +0200

    n#757905 fix VML import of mso-wrap-style:none
    
    There were two problems here:
    1) SimpleShape::implConvertAndInsert() did not set the anchor type
    2) DomainMapper_Impl::PushShapeContext() tried to overwrite it
    
    Change-Id: I2c32016c4bb15c891cf287d8208e10817c6291e6
    (cherry picked from commit 9e8957de203bb9abb208516ad32aee9527feb67b)

diff --git a/oox/inc/oox/vml/vmlshape.hxx b/oox/inc/oox/vml/vmlshape.hxx
index d8e7209..b9e4908 100644
--- a/oox/inc/oox/vml/vmlshape.hxx
+++ b/oox/inc/oox/vml/vmlshape.hxx
@@ -85,6 +85,7 @@ struct ShapeTypeModel
     ::rtl::OUString     maFlip;                 ///< Flip type of the shape (can be "x" or "y").
     sal_Bool            mbAutoHeight;           ///< If true, the height value is a minimum value (mostly used for textboxes)
     sal_Bool            mbVisible;              /// Visible or Hidden
+    ::rtl::OUString     maWrapStyle;            /// Wrapping mode for text.
 
     StrokeModel         maStrokeModel;          ///< Border line formatting.
     FillModel           maFillModel;            ///< Shape fill formatting.
diff --git a/oox/source/token/properties.txt b/oox/source/token/properties.txt
index f2442e6..596bf82 100644
--- a/oox/source/token/properties.txt
+++ b/oox/source/token/properties.txt
@@ -10,6 +10,7 @@ AdjustmentValues
 Address
 Align
 AnchorPosition
+AnchorType
 ApplyFormDesignMode
 AreaLinks
 ArrangeOrder
diff --git a/oox/source/vml/vmlshape.cxx b/oox/source/vml/vmlshape.cxx
index aa39fcc..44fc631 100644
--- a/oox/source/vml/vmlshape.cxx
+++ b/oox/source/vml/vmlshape.cxx
@@ -426,6 +426,9 @@ Reference< XShape > SimpleShape::implConvertAndInsert( const Reference< XShapes
         aPropertySet.setAnyProperty(PROP_VertOrientPosition, makeAny( aShapeRect.Y ) );
     }
 
+    if (xShape.is() && maTypeModel.maWrapStyle == "none")
+        PropertySet(xShape).setAnyProperty(PROP_AnchorType, makeAny(text::TextContentAnchorType_AS_CHARACTER));
+
     return xShape;
 }
 
diff --git a/oox/source/vml/vmlshapecontext.cxx b/oox/source/vml/vmlshapecontext.cxx
index 68793c9..290a737 100644
--- a/oox/source/vml/vmlshapecontext.cxx
+++ b/oox/source/vml/vmlshapecontext.cxx
@@ -363,6 +363,7 @@ void ShapeTypeContext::setStyle( const OUString& rStyle )
             else if( aName == "flip" )       mrTypeModel.maFlip = aValue;
             else if( aName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "visibility" ) ) )
                 mrTypeModel.mbVisible = !aValue.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM("hidden") );
+            else if( aName == "mso-wrap-style" ) mrTypeModel.maWrapStyle = aValue;
         }
     }
 }
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 88a29d1..08e189b 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -1539,7 +1539,7 @@ void DomainMapper_Impl::PushShapeContext( const uno::Reference< drawing::XShape
             uno::Reference<text::XTextRange> xTextRange(xTextAppend->createTextCursorByRange(xTextAppend->getEnd()), uno::UNO_QUERY_THROW);
             xTextAppend->insertTextContent(xTextRange, xTextContent, sal_False);
         }
-        else
+        else if (nAnchorType != text::TextContentAnchorType_AS_CHARACTER)
         {
             xProps->setPropertyValue( rPropNameSupplier.GetName( PROP_ANCHOR_TYPE ), bIsGraphic  ?  uno::makeAny( text::TextContentAnchorType_AS_CHARACTER ) : uno::makeAny( text::TextContentAnchorType_AT_PARAGRAPH ) );
         }


More information about the Libreoffice-commits mailing list