From e75b76545c501e75d63c2e4abc5925b9166ed2a3 Mon Sep 17 00:00:00 2001 From: Pino Toscano Date: Mon, 11 May 2009 11:41:20 +0000 Subject: [PATCH] convert and set the links only *once* per page svn path=/trunk/KDE/kdegraphics/okular/; revision=966553 --- generators/dvi/generator_dvi.cpp | 9 ++++++++- generators/dvi/generator_dvi.h | 3 +++ 2 files changed, 11 insertions(+), 1 deletion(-) 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 );