Author: pfg
Date: Tue Feb 14 21:58:39 2012
New Revision: 1244232

URL: http://svn.apache.org/viewvc?rev=1244232&view=rev
Log:
i20878 - Q-PCD shows spaces at end of a wrapped line in Writer.

Modified:
    incubator/ooo/trunk/main/sw/inc/paratr.hxx
    incubator/ooo/trunk/main/sw/source/core/text/guess.cxx

Modified: incubator/ooo/trunk/main/sw/inc/paratr.hxx
URL: 
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/sw/inc/paratr.hxx?rev=1244232&r1=1244231&r2=1244232&view=diff
==============================================================================
--- incubator/ooo/trunk/main/sw/inc/paratr.hxx (original)
+++ incubator/ooo/trunk/main/sw/inc/paratr.hxx Tue Feb 14 21:58:39 2012
@@ -30,6 +30,7 @@
 #include <swatrset.hxx>
 #include <format.hxx>
 #include <swtypes.hxx>
+#include <editeng/adjitem.hxx>
 
 class SwCharFmt;
 class IntlWrapper;
@@ -47,12 +48,12 @@ class IntlWrapper;
 //SwFmtDrop an die Absatze propagiert.
 class SW_DLLPUBLIC SwFmtDrop: public SfxPoolItem, public SwClient
 {
-       SwModify* pDefinedIn;   // Modify-Object, in dem der DropCaps steht
-                                                       // kann nur 
TxtFmtCollection/TxtNode sein
-       sal_uInt16 nDistance;   // Abstand zum Textbeginn
-       sal_uInt16 nReadFmt;    // fuer den Sw3-Reader: CharFormat-Id (Pool 
laden!)
-       sal_uInt8   nLines;              // Anzahl der Zeilen
-       sal_uInt8   nChars;              // Anzahl der Zeichen
+       SwModify* pDefinedIn;   // Modify-Object, in which DropCaps exists
+                                                       // can have only 
TxtFmtCollection/TxtNode
+       sal_uInt16 nDistance;   // Distance from the text beginning
+       sal_uInt16 nReadFmt;    // for the Sw3-Reader: CharFormat-Id (Pool 
load!)
+       sal_uInt8   nLines;              // Number of lines
+       sal_uInt8   nChars;              // Number of characters
        sal_Bool   bWholeWord;   // Erstes Wort als Initialen
 public:
        TYPEINFO(); //Bereits in der Basisklasse SwClient

Modified: incubator/ooo/trunk/main/sw/source/core/text/guess.cxx
URL: 
http://svn.apache.org/viewvc/incubator/ooo/trunk/main/sw/source/core/text/guess.cxx?rev=1244232&r1=1244231&r2=1244232&view=diff
==============================================================================
--- incubator/ooo/trunk/main/sw/source/core/text/guess.cxx (original)
+++ incubator/ooo/trunk/main/sw/source/core/text/guess.cxx Tue Feb 14 21:58:39 
2012
@@ -24,7 +24,6 @@
 // MARKER(update_precomp.py): autogen include statement, do not remove
 #include "precompiled_sw.hxx"
 
-
 #include <ctype.h>
 #include <editeng/unolingu.hxx>
 #include <tools/shl.hxx>    // needed for SW_MOD() macro
@@ -42,6 +41,7 @@
 #include <com/sun/star/i18n/WordType.hpp>
 #include <unotools/charclass.hxx>
 #include <porfld.hxx>
+#include <paratr.hxx>
 
 using ::rtl::OUString;
 using namespace ::com::sun::star;
@@ -65,7 +65,7 @@ sal_Bool SwTxtGuess::Guess( const SwTxtP
 {
        nCutPos = rInf.GetIdx();
 
-       // Leere Strings sind immer 0
+    // Empty strings are always 0
        if( !rInf.GetLen() || !rInf.GetTxt().Len() )
                return sal_False;
 
@@ -188,8 +188,8 @@ sal_Bool SwTxtGuess::Guess( const SwTxtP
 
         nBreakWidth = nMinSize;
 
-               // Der folgende Vergleich sollte eigenlich immer sal_True 
ergeben, sonst
-               // hat es wohl bei GetTxtBreak einen Pixel-Rundungsfehler 
gegeben...
+        // The following comparison should always give sal_True, otherwise
+        // a pixel rounding error in GetTxtBreak will appear
                if ( nBreakWidth <= nLineWidth )
                {
                        if( nItalic && ( nBreakPos + 1 ) >= rInf.GetTxt().Len() 
)
@@ -219,21 +219,32 @@ sal_Bool SwTxtGuess::Guess( const SwTxtP
     {
                nBreakPos = nCutPos;
                xub_StrLen nX = nBreakPos;
+        
+        const SvxAdjust& rAdjust = 
rInf.GetTxtFrm()->GetTxtNode()->GetSwAttrSet().GetAdjust().GetAdjust();
+        if ( rAdjust == SVX_ADJUST_LEFT )
+        {
+            // we step back until a non blank character has been found
+            // or there is only one more character left
+            while( nX && nBreakPos > rInf.GetTxt().Len() &&
+                   ( CH_BLANK == ( cCutChar = rInf.GetChar( --nX ) ) ||
+                     CH_FULL_BLANK == cCutChar ) )
+                --nBreakPos;
+        }
+        else
+        {
+            while( nX && nBreakPos > rInf.GetLineStart() + 1 &&            
+                   ( CH_BLANK == ( cCutChar = rInf.GetChar( --nX ) ) ||
+                     CH_FULL_BLANK == cCutChar ) )
+                --nBreakPos;
+        }       
 
-        // we step back until a non blank character has been found
-        // or there is only one more character left
-        while( nX && nBreakPos > rInf.GetLineStart() + 1 &&
-               ( CH_BLANK == ( cCutChar = rInf.GetChar( --nX ) ) ||
-                 CH_FULL_BLANK == cCutChar ) )
-            --nBreakPos;
-
-               if( nBreakPos > rInf.GetIdx() )
-                       nPorLen = nBreakPos - rInf.GetIdx();
+        if( nBreakPos > rInf.GetIdx() )
+            nPorLen = nBreakPos - rInf.GetIdx();
         while( ++nCutPos < rInf.GetTxt().Len() &&
                ( CH_BLANK == ( cCutChar = rInf.GetChar( nCutPos ) ) ||
                  CH_FULL_BLANK == cCutChar ) )
                        ; // nothing
-
+        
                nBreakStart = nCutPos;
        }
        else if( pBreakIt->GetBreakIter().is() )
@@ -429,16 +440,20 @@ sal_Bool SwTxtGuess::Guess( const SwTxtP
                 CHAR_SOFTHYPHEN == rInf.GetTxt().GetChar( nBreakPos - 1 ) )
                                nBreakPos = rInf.GetIdx() - 1;
 
-            // Delete any blanks at the end of a line, but be careful:
-            // If a field has been expanded, we do not want to delete any
-            // blanks inside the field portion. This would cause an unwanted
-            // underflow
-            xub_StrLen nX = nBreakPos;
-            while( nX > rInf.GetLineStart() &&
-                   ( CH_TXTATR_BREAKWORD != cFldChr || nX > rInf.GetIdx() ) &&
-                   ( CH_BLANK == rInf.GetChar( --nX ) ||
-                     CH_FULL_BLANK == rInf.GetChar( nX ) ) )
-                nBreakPos = nX;
+            const SvxAdjust& rAdjust = 
rInf.GetTxtFrm()->GetTxtNode()->GetSwAttrSet().GetAdjust().GetAdjust();
+            if( rAdjust != SVX_ADJUST_LEFT )
+            {
+                // Delete any blanks at the end of a line, but be careful:
+                // If a field has been expanded, we do not want to delete any
+                // blanks inside the field portion. This would cause an 
unwanted
+                // underflow
+                xub_StrLen nX = nBreakPos;
+                while( nX > rInf.GetLineStart() &&
+                       ( CH_TXTATR_BREAKWORD != cFldChr || nX > rInf.GetIdx() 
) &&
+                       ( CH_BLANK == rInf.GetChar( --nX ) ||
+                         CH_FULL_BLANK == rInf.GetChar( nX ) ) )
+                    nBreakPos = nX;
+            }
             if( nBreakPos > rInf.GetIdx() )
                                nPorLen = nBreakPos - rInf.GetIdx();
                }


Reply via email to