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
remotes/origin/Applications/17.04
Albert Astals Cid 9 years ago
parent 19be15b6a5
commit ce1c882d7e
  1. 17
      ui/pageview.cpp

@ -185,7 +185,7 @@ public:
OkularTTS * m_tts; OkularTTS * m_tts;
#endif #endif
QTimer * refreshTimer; QTimer * refreshTimer;
int refreshPage; QSet<int> refreshPages;
// bbox state for Trim to Selection mode // bbox state for Trim to Selection mode
Okular::NormalizedRect trimBoundingBox; Okular::NormalizedRect trimBoundingBox;
@ -325,7 +325,6 @@ PageView::PageView( QWidget *parent, Okular::Document *document )
d->m_tts = 0; d->m_tts = 0;
#endif #endif
d->refreshTimer = 0; d->refreshTimer = 0;
d->refreshPage = -1;
d->aRotateClockwise = 0; d->aRotateClockwise = 0;
d->aRotateCounterClockwise = 0; d->aRotateCounterClockwise = 0;
d->aRotateOriginal = 0; d->aRotateOriginal = 0;
@ -5219,7 +5218,7 @@ void PageView::slotFormChanged( int pageNumber )
connect( d->refreshTimer, &QTimer::timeout, connect( d->refreshTimer, &QTimer::timeout,
this, &PageView::slotRefreshPage ); this, &PageView::slotRefreshPage );
} }
d->refreshPage = pageNumber; d->refreshPages << pageNumber;
int delay = 0; int delay = 0;
if ( d->m_formsVisible ) if ( d->m_formsVisible )
{ {
@ -5230,12 +5229,12 @@ void PageView::slotFormChanged( int pageNumber )
void PageView::slotRefreshPage() void PageView::slotRefreshPage()
{ {
const int req = d->refreshPage; foreach(int req, d->refreshPages)
if ( req < 0 ) {
return; QMetaObject::invokeMethod( d->document, "refreshPixmaps", Qt::QueuedConnection,
d->refreshPage = -1; Q_ARG( int, req ) );
QMetaObject::invokeMethod( d->document, "refreshPixmaps", Qt::QueuedConnection, }
Q_ARG( int, req ) ); d->refreshPages.clear();
} }
#ifdef HAVE_SPEECH #ifdef HAVE_SPEECH

Loading…
Cancel
Save