incubator-ooo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From p..@apache.org
Subject svn commit: r1244232 - in /incubator/ooo/trunk/main/sw: inc/paratr.hxx source/core/text/guess.cxx
Date Tue, 14 Feb 2012 21:58:39 GMT
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();
 		}



Mime
View raw message