SVN commit 883890 by eros: Keep the Thumbnails list to a clever position when changing the filtering keyword (instead of going to the top). This way the Tl is closer and more 'in sync' with the current page. Applied a patch by Luca Burelli. CCBUG: 175046 M +9 -1 thumbnaillist.cpp --- trunk/KDE/kdegraphics/okular/ui/thumbnaillist.cpp #883889:883890 @@ -216,7 +216,8 @@ if ( !( setupFlags & Okular::DocumentObserver::DocumentChanged ) && d->m_selected ) { prevPage = d->m_selected->page()->number(); - } + } else + prevPage = d->m_document->viewport().pageNumber; // delete all the Thumbnails QVector::const_iterator tIt = d->m_thumbnails.constBegin(), tEnd = d->m_thumbnails.constEnd(); @@ -247,6 +248,7 @@ // generate Thumbnails for the given set of pages int width = viewport()->width(); int height = 0; + int centerHeight = 0; for ( pIt = pages.constBegin(); pIt != pEnd ; ++pIt ) //if ( skipCheck || (*pIt)->attributes() & flags ) if ( skipCheck || (*pIt)->hasHighlights( SW_SEARCH_ID ) ) @@ -258,10 +260,15 @@ // update total height (asking widget its own height) t->resizeFitWidth( width ); // restoring the previous selected page, if any + if ( (*pIt)->number() < prevPage ) + { + centerHeight = height + t->height() + KDialog::spacingHint()/2; + } if ( (*pIt)->number() == prevPage ) { d->m_selected = t; d->m_selected->setSelected( true ); + centerHeight = height + t->height() / 2; } height += t->height() + KDialog::spacingHint(); } @@ -272,6 +279,7 @@ // enable scrollbar when there's something to scroll verticalScrollBar()->setEnabled( viewport()->height() < height ); + verticalScrollBar()->setValue(centerHeight - viewport()->height() / 2); // request for thumbnail generation d->delayedRequestVisiblePixmaps( 200 );