From 5facb3514e23a5090294d210ef5fca35ce95c9c2 Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Sun, 25 Feb 2018 18:48:11 +0100 Subject: [PATCH] Add test that produces bug 388288 crash --- autotests/parttest.cpp | 54 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/autotests/parttest.cpp b/autotests/parttest.cpp index 1a6f2f7f7..bc2618b52 100644 --- a/autotests/parttest.cpp +++ b/autotests/parttest.cpp @@ -88,6 +88,7 @@ class PartTest void testSelectText(); void testClickInternalLink(); void testOpenUrlArguments(); + void test388288(); void testSaveAs(); void testSaveAs_data(); void testSaveAsUndoStackAnnotations(); @@ -1222,6 +1223,59 @@ void PartTest::testOpenUrlArguments() QCOMPARE( part.arguments().mimeType(), QStringLiteral("text/rtf") ); } +void PartTest::test388288() +{ + Okular::Part part(nullptr, nullptr, QVariantList()); + + part.openUrl(QUrl::fromLocalFile(QStringLiteral(KDESRCDIR "data/file1.pdf"))); + + part.widget()->show(); + QVERIFY(QTest::qWaitForWindowExposed(part.widget())); + + QMetaObject::invokeMethod(part.m_pageView, "slotToggleAnnotator", Q_ARG( bool, true )); + + auto annot = new Okular::HighlightAnnotation(); + annot->setHighlightType( Okular::HighlightAnnotation::Highlight ); + const Okular::NormalizedRect r(0.36, 0.16, 0.51, 0.17); + annot->setBoundingRectangle( r ); + Okular::HighlightAnnotation::Quad q; + q.setCapStart( false ); + q.setCapEnd( false ); + q.setFeather( 1.0 ); + q.setPoint( Okular::NormalizedPoint( r.left, r.bottom ), 0 ); + q.setPoint( Okular::NormalizedPoint( r.right, r.bottom ), 1 ); + q.setPoint( Okular::NormalizedPoint( r.right, r.top ), 2 ); + q.setPoint( Okular::NormalizedPoint( r.left, r.top ), 3 ); + annot->highlightQuads().append( q ); + + part.m_document->addPageAnnotation( 0, annot ); + + const int width = part.m_pageView->horizontalScrollBar()->maximum() + + part.m_pageView->viewport()->width(); + const int height = part.m_pageView->verticalScrollBar()->maximum() + + part.m_pageView->viewport()->height(); + + QTest::mouseMove(part.m_pageView->viewport(), QPoint(width * 0.5, height * 0.5)); + QTRY_COMPARE(part.m_pageView->cursor(), Qt::OpenHandCursor); + + QTest::mouseMove(part.m_pageView->viewport(), QPoint(width * 0.4, height * 0.165)); + QTRY_COMPARE(part.m_pageView->cursor(), Qt::ArrowCursor); + + QTest::mouseMove(part.m_pageView->viewport(), QPoint(width * 0.1, height * 0.165)); + + part.m_document->undo(); + + annot = new Okular::HighlightAnnotation(); + annot->setHighlightType( Okular::HighlightAnnotation::Highlight ); + annot->setBoundingRectangle( r ); + annot->highlightQuads().append( q ); + + part.m_document->addPageAnnotation( 0, annot ); + + QTest::mouseMove(part.m_pageView->viewport(), QPoint(width * 0.5, height * 0.5)); + QTRY_COMPARE(part.m_pageView->cursor(), Qt::OpenHandCursor); +} + } int main(int argc, char *argv[])