From ce1c882d7e2b695fc61db537952a1021e45dcc2e Mon Sep 17 00:00:00 2001 From: Albert Astals Cid Date: Thu, 2 Mar 2017 22:42:50 +0100 Subject: [PATCH] Make slotFormChanged store multiple pages in the timer and not just one It's hard the user edits forms in more than one page in less than a second (though possible) but once we introduce JS parsing that will be defenitely possible so need to store more than one page --- ui/pageview.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/ui/pageview.cpp b/ui/pageview.cpp index bc7fa86f4..d3c027e1f 100644 --- a/ui/pageview.cpp +++ b/ui/pageview.cpp @@ -185,7 +185,7 @@ public: OkularTTS * m_tts; #endif QTimer * refreshTimer; - int refreshPage; + QSet refreshPages; // bbox state for Trim to Selection mode Okular::NormalizedRect trimBoundingBox; @@ -325,7 +325,6 @@ PageView::PageView( QWidget *parent, Okular::Document *document ) d->m_tts = 0; #endif d->refreshTimer = 0; - d->refreshPage = -1; d->aRotateClockwise = 0; d->aRotateCounterClockwise = 0; d->aRotateOriginal = 0; @@ -5219,7 +5218,7 @@ void PageView::slotFormChanged( int pageNumber ) connect( d->refreshTimer, &QTimer::timeout, this, &PageView::slotRefreshPage ); } - d->refreshPage = pageNumber; + d->refreshPages << pageNumber; int delay = 0; if ( d->m_formsVisible ) { @@ -5230,12 +5229,12 @@ void PageView::slotFormChanged( int pageNumber ) void PageView::slotRefreshPage() { - const int req = d->refreshPage; - if ( req < 0 ) - return; - d->refreshPage = -1; - QMetaObject::invokeMethod( d->document, "refreshPixmaps", Qt::QueuedConnection, - Q_ARG( int, req ) ); + foreach(int req, d->refreshPages) + { + QMetaObject::invokeMethod( d->document, "refreshPixmaps", Qt::QueuedConnection, + Q_ARG( int, req ) ); + } + d->refreshPages.clear(); } #ifdef HAVE_SPEECH