diff --git a/src/core/composer/qgscomposerhtml.cpp b/src/core/composer/qgscomposerhtml.cpp index 9a0f81fd7e3..f12174ecdb4 100644 --- a/src/core/composer/qgscomposerhtml.cpp +++ b/src/core/composer/qgscomposerhtml.cpp @@ -376,6 +376,8 @@ double QgsComposerHtml::findNearbyPageBreak( double yPos ) //of maxSearchDistance int changes = 0; QRgb currentColor; + bool currentPixelTransparent = false; + bool previousPixelTransparent = false; QRgb pixelColor; QList< QPair > candidates; int minRow = qMax( idealPos - maxSearchDistance, 0 ); @@ -391,12 +393,14 @@ double QgsComposerHtml::findNearbyPageBreak( double yPos ) //since this is likely a line break, or gap between table cells, etc //but very unlikely to be midway through a text line or picture pixelColor = mRenderedPage->pixel( col, candidateRow ); - if ( pixelColor != currentColor ) + currentPixelTransparent = qAlpha( pixelColor ) == 0; + if ( pixelColor != currentColor && !( currentPixelTransparent && previousPixelTransparent ) ) { //color has changed currentColor = pixelColor; changes++; } + previousPixelTransparent = currentPixelTransparent; } candidates.append( qMakePair( candidateRow, changes ) ); } diff --git a/tests/src/core/testqgscomposerhtml.cpp b/tests/src/core/testqgscomposerhtml.cpp index 3651f711423..8112972d7ce 100644 --- a/tests/src/core/testqgscomposerhtml.cpp +++ b/tests/src/core/testqgscomposerhtml.cpp @@ -200,7 +200,7 @@ void TestQgsComposerHtml::tableMultiFrame() void TestQgsComposerHtml::htmlMultiFrameSmartBreak() { QgsComposerHtml* htmlItem = new QgsComposerHtml( mComposition, false ); - QgsComposerFrame* htmlFrame = new QgsComposerFrame( mComposition, htmlItem, 10, 10, 100, 50 ); + QgsComposerFrame* htmlFrame = new QgsComposerFrame( mComposition, htmlItem, 10, 10, 100, 52 ); htmlItem->addFrame( htmlFrame ); htmlItem->setResizeMode( QgsComposerMultiFrame::RepeatUntilFinished ); htmlItem->setUseSmartBreaks( true ); @@ -209,7 +209,7 @@ void TestQgsComposerHtml::htmlMultiFrameSmartBreak() htmlItem->setUrl( QUrl( QString( "file:///%1" ).arg( QString( TEST_DATA_DIR ) + QDir::separator() + "test_html.html" ) ) ); htmlItem->frame( 0 )->setFrameEnabled( true ); QgsCompositionChecker checker1( "composerhtml_smartbreaks1", mComposition ); - bool result = checker1.testComposition( mReport ); + bool result = checker1.testComposition( mReport, 0, 200 ); //page2 QgsCompositionChecker checker2( "composerhtml_smartbreaks2", mComposition ); diff --git a/tests/src/python/test_qgscomposerhtml.py b/tests/src/python/test_qgscomposerhtml.py index c8d004d2512..733216f0575 100644 --- a/tests/src/python/test_qgscomposerhtml.py +++ b/tests/src/python/test_qgscomposerhtml.py @@ -102,7 +102,7 @@ class TestQgsComposerHtml(TestCase): """Test rendering to multiframes with smart breaks.""" composerHtml = QgsComposerHtml(self.mComposition, False) htmlFrame = QgsComposerFrame(self.mComposition, composerHtml, - 10, 10, 100, 50) + 10, 10, 100, 52) composerHtml.addFrame(htmlFrame) composerHtml.setResizeMode( QgsComposerMultiFrame.RepeatUntilFinished) @@ -113,7 +113,7 @@ class TestQgsComposerHtml(TestCase): print "Checking page 1" myPage = 0 checker1 = QgsCompositionChecker('composerhtml_smartbreaks1', self.mComposition) - myTestResult, myMessage = checker1.testComposition( myPage ) + myTestResult, myMessage = checker1.testComposition( myPage, 200 ) assert myTestResult, myMessage print "Checking page 2" diff --git a/tests/testdata/control_images/expected_composerhtml_smartbreaks1/expected_composerhtml_smartbreaks1.png b/tests/testdata/control_images/expected_composerhtml_smartbreaks1/expected_composerhtml_smartbreaks1.png index a568ec77b36..2727b72b4a1 100644 Binary files a/tests/testdata/control_images/expected_composerhtml_smartbreaks1/expected_composerhtml_smartbreaks1.png and b/tests/testdata/control_images/expected_composerhtml_smartbreaks1/expected_composerhtml_smartbreaks1.png differ diff --git a/tests/testdata/control_images/expected_composerhtml_smartbreaks2/expected_composerhtml_smartbreaks2.png b/tests/testdata/control_images/expected_composerhtml_smartbreaks2/expected_composerhtml_smartbreaks2.png index dfdc2e5d897..eb9f6cc06f2 100644 Binary files a/tests/testdata/control_images/expected_composerhtml_smartbreaks2/expected_composerhtml_smartbreaks2.png and b/tests/testdata/control_images/expected_composerhtml_smartbreaks2/expected_composerhtml_smartbreaks2.png differ