diff --git a/generators/dvi/generator_dvi.cpp b/generators/dvi/generator_dvi.cpp index d9c169705..c5cdda284 100644 --- a/generators/dvi/generator_dvi.cpp +++ b/generators/dvi/generator_dvi.cpp @@ -94,6 +94,7 @@ bool DviGenerator::doCloseDocument() m_dviRenderer = 0; ready = false; + m_linkGenerated.clear(); return true; } @@ -213,7 +214,11 @@ void DviGenerator::generatePixmap( Okular::PixmapRequest *request ) request->page()->setPixmap( request->id(), new QPixmap( QPixmap::fromImage( pageInfo->img ) ) ); - request->page()->setObjectRects( generateDviLinks( pageInfo ) ); + if ( !m_linkGenerated[ request->pageNumber() ] ) + { + request->page()->setObjectRects( generateDviLinks( pageInfo ) ); + m_linkGenerated[ request->pageNumber() ] = true; + } } } @@ -353,6 +358,8 @@ void DviGenerator::loadPages( QVector< Okular::Page * > &pagesVector ) int numofpages = m_dviRenderer->dviFile->total_pages; pagesVector.resize( numofpages ); + m_linkGenerated.fill( false, numofpages ); + //kDebug(DviDebug) << "resolution:" << m_resolution << ", dviFile->preferred?"; /* get the suggested size */ diff --git a/generators/dvi/generator_dvi.h b/generators/dvi/generator_dvi.h index 66bf1ead5..c5af69c84 100644 --- a/generators/dvi/generator_dvi.h +++ b/generators/dvi/generator_dvi.h @@ -12,6 +12,8 @@ #include +#include + class dviRenderer; class dviPageInfo; class Anchor; @@ -51,6 +53,7 @@ class DviGenerator : public Okular::Generator bool ready; dviRenderer *m_dviRenderer; + QBitArray m_linkGenerated; void loadPages( QVector< Okular::Page * > & pagesVector ); Okular::TextPage *extractTextFromPage( dviPageInfo *pageInfo );