You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by al...@apache.org on 2012/06/08 14:42:20 UTC
svn commit: r1348044 - in /incubator/ooo/branches/AOO34: ./ main/
main/editeng/source/editeng/impedit3.cxx
Author: alg
Date: Fri Jun 8 12:42:20 2012
New Revision: 1348044
URL: http://svn.apache.org/viewvc?rev=1348044&view=rev
Log:
#119756# merged fix from trunk (r1348010)
Modified:
incubator/ooo/branches/AOO34/ (props changed)
incubator/ooo/branches/AOO34/main/ (props changed)
incubator/ooo/branches/AOO34/main/editeng/source/editeng/impedit3.cxx
Propchange: incubator/ooo/branches/AOO34/
------------------------------------------------------------------------------
Merged /incubator/ooo/trunk:r1348010
Propchange: incubator/ooo/branches/AOO34/main/
------------------------------------------------------------------------------
Merged /incubator/ooo/trunk/main:r1348010
Modified: incubator/ooo/branches/AOO34/main/editeng/source/editeng/impedit3.cxx
URL: http://svn.apache.org/viewvc/incubator/ooo/branches/AOO34/main/editeng/source/editeng/impedit3.cxx?rev=1348044&r1=1348043&r2=1348044&view=diff
==============================================================================
--- incubator/ooo/branches/AOO34/main/editeng/source/editeng/impedit3.cxx (original)
+++ incubator/ooo/branches/AOO34/main/editeng/source/editeng/impedit3.cxx Fri Jun 8 12:42:20 2012
@@ -2899,6 +2899,9 @@ void ImpEditEngine::Paint( OutputDevice*
sal_uInt16 nLines = pPortion->GetLines().Count();
sal_uInt16 nLastLine = nLines-1;
+ // #108052#
+ bool bEndOfParagraphWritten(false);
+
if ( !IsVertical() )
aStartPos.Y() += pPortion->GetFirstLineOffset();
else
@@ -2909,7 +2912,9 @@ void ImpEditEngine::Paint( OutputDevice*
const SvxLineSpacingItem& rLSItem = ((const SvxLineSpacingItem&)pPortion->GetNode()->GetContentAttribs().GetItem( EE_PARA_SBL ));
sal_uInt16 nSBL = ( rLSItem.GetInterLineSpaceRule() == SVX_INTER_LINE_SPACE_FIX )
? GetYValue( rLSItem.GetInterLineSpace() ) : 0;
- for ( sal_uInt16 nLine = 0; nLine < nLines; nLine++ )
+ bool bPaintBullet (false);
+
+ for ( sal_uInt16 nLine = 0; nLine < nLines; nLine++ )
{
pLine = pPortion->GetLines().GetObject(nLine);
DBG_ASSERT( pLine, "NULL-Pointer im Zeileniterator in UpdateViews" );
@@ -2930,7 +2935,7 @@ void ImpEditEngine::Paint( OutputDevice*
if ( ( !IsVertical() && ( aStartPos.Y() > aClipRec.Top() ) )
|| ( IsVertical() && aStartPos.X() < aClipRec.Right() ) )
{
- bool bPaintBullet (false);
+ bPaintBullet = false;
// Why not just also call when stripping portions? This will give the correct values
// and needs no position corrections in OutlinerEditEng::DrawingText which tries to call
@@ -2952,32 +2957,6 @@ void ImpEditEngine::Paint( OutputDevice*
// --------------------------------------------------
nIndex = pLine->GetStart();
- // #i108052# When stripping a callback for empty paragraphs is needed. This
- // was somehow lost/removed/killed by making the TextPortions with empty
- // paragraph to type PORTIONKIND_TAB instead of PORTIONKIND_TEXT. Adding here
- // since I could not find out who and why this has
- // changed.
- // #i118881#: Do not include the empty paragraph
- // after a bullet. Otherwise the wrong paragraph
- // indices will eventually find their way into
- // metafiles and break the association between
- // paragraphs and Impress animations.
- if(!bPaintBullet && bStripOnly && pLine->GetStartPortion() == pLine->GetEndPortion())
- {
- const Color aOverlineColor(pOutDev->GetOverlineColor());
- const Color aTextLineColor(pOutDev->GetTextLineColor());
-
- GetEditEnginePtr()->DrawingText(
- aTmpPos, String(), 0, 0, 0,
- aTmpFont, n, nIndex, 0,
- 0,
- 0,
- false, true, false, // support for EOL/EOP TEXT comments
- 0,
- aOverlineColor,
- aTextLineColor);
- }
-
for ( sal_uInt16 y = pLine->GetStartPortion(); y <= pLine->GetEndPortion(); y++ )
{
DBG_ASSERT( pPortion->GetTextPortions().Count(), "Zeile ohne Textportion im Paint!" );
@@ -3325,6 +3304,12 @@ void ImpEditEngine::Paint( OutputDevice*
&aLocale,
aOverlineColor,
aTextLineColor);
+
+ // #108052# remember that EOP is written already for this ParaPortion
+ if(bEndOfParagraph)
+ {
+ bEndOfParagraphWritten = true;
+ }
}
else
{
@@ -3580,6 +3565,27 @@ void ImpEditEngine::Paint( OutputDevice*
else
aStartPos.X() -= nUL;
}
+
+ // #108052# Safer way for #i108052# and #i118881#: If for the current ParaPortion
+ // EOP is not written, do it now. This will be safer than before. It has shown
+ // that the reason for #i108052# was fixed/removed again, so this is a try to fix
+ // the number of paragraphs (and counting empty ones) now independent from the
+ // changes in EditEngine behaviour.
+ if(!bEndOfParagraphWritten && !bPaintBullet && bStripOnly)
+ {
+ const Color aOverlineColor(pOutDev->GetOverlineColor());
+ const Color aTextLineColor(pOutDev->GetTextLineColor());
+
+ GetEditEnginePtr()->DrawingText(
+ aTmpPos, String(), 0, 0, 0,
+ aTmpFont, n, nIndex, 0,
+ 0,
+ 0,
+ false, true, false, // support for EOL/EOP TEXT comments
+ 0,
+ aOverlineColor,
+ aTextLineColor);
+ }
}
else
{