Skip to content

Commit 48edab4

Browse files
committedDec 1, 2014
Hopefully fix intermittently failing composer html test
1 parent 78141c4 commit 48edab4

File tree

5 files changed

+9
-5
lines changed

5 files changed

+9
-5
lines changed
 

‎src/core/composer/qgscomposerhtml.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -376,6 +376,8 @@ double QgsComposerHtml::findNearbyPageBreak( double yPos )
376376
//of maxSearchDistance
377377
int changes = 0;
378378
QRgb currentColor;
379+
bool currentPixelTransparent = false;
380+
bool previousPixelTransparent = false;
379381
QRgb pixelColor;
380382
QList< QPair<int, int> > candidates;
381383
int minRow = qMax( idealPos - maxSearchDistance, 0 );
@@ -391,12 +393,14 @@ double QgsComposerHtml::findNearbyPageBreak( double yPos )
391393
//since this is likely a line break, or gap between table cells, etc
392394
//but very unlikely to be midway through a text line or picture
393395
pixelColor = mRenderedPage->pixel( col, candidateRow );
394-
if ( pixelColor != currentColor )
396+
currentPixelTransparent = qAlpha( pixelColor ) == 0;
397+
if ( pixelColor != currentColor && !( currentPixelTransparent && previousPixelTransparent ) )
395398
{
396399
//color has changed
397400
currentColor = pixelColor;
398401
changes++;
399402
}
403+
previousPixelTransparent = currentPixelTransparent;
400404
}
401405
candidates.append( qMakePair( candidateRow, changes ) );
402406
}

‎tests/src/core/testqgscomposerhtml.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ void TestQgsComposerHtml::tableMultiFrame()
200200
void TestQgsComposerHtml::htmlMultiFrameSmartBreak()
201201
{
202202
QgsComposerHtml* htmlItem = new QgsComposerHtml( mComposition, false );
203-
QgsComposerFrame* htmlFrame = new QgsComposerFrame( mComposition, htmlItem, 10, 10, 100, 50 );
203+
QgsComposerFrame* htmlFrame = new QgsComposerFrame( mComposition, htmlItem, 10, 10, 100, 52 );
204204
htmlItem->addFrame( htmlFrame );
205205
htmlItem->setResizeMode( QgsComposerMultiFrame::RepeatUntilFinished );
206206
htmlItem->setUseSmartBreaks( true );
@@ -209,7 +209,7 @@ void TestQgsComposerHtml::htmlMultiFrameSmartBreak()
209209
htmlItem->setUrl( QUrl( QString( "file:///%1" ).arg( QString( TEST_DATA_DIR ) + QDir::separator() + "test_html.html" ) ) );
210210
htmlItem->frame( 0 )->setFrameEnabled( true );
211211
QgsCompositionChecker checker1( "composerhtml_smartbreaks1", mComposition );
212-
bool result = checker1.testComposition( mReport );
212+
bool result = checker1.testComposition( mReport, 0, 200 );
213213

214214
//page2
215215
QgsCompositionChecker checker2( "composerhtml_smartbreaks2", mComposition );

‎tests/src/python/test_qgscomposerhtml.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ def testHtmlSmartBreaks(self):
102102
"""Test rendering to multiframes with smart breaks."""
103103
composerHtml = QgsComposerHtml(self.mComposition, False)
104104
htmlFrame = QgsComposerFrame(self.mComposition, composerHtml,
105-
10, 10, 100, 50)
105+
10, 10, 100, 52)
106106
composerHtml.addFrame(htmlFrame)
107107
composerHtml.setResizeMode(
108108
QgsComposerMultiFrame.RepeatUntilFinished)
@@ -113,7 +113,7 @@ def testHtmlSmartBreaks(self):
113113
print "Checking page 1"
114114
myPage = 0
115115
checker1 = QgsCompositionChecker('composerhtml_smartbreaks1', self.mComposition)
116-
myTestResult, myMessage = checker1.testComposition( myPage )
116+
myTestResult, myMessage = checker1.testComposition( myPage, 200 )
117117
assert myTestResult, myMessage
118118

119119
print "Checking page 2"

0 commit comments

Comments
 (0)
Please sign in to comment.