SVN commit 420380 by aacid: you can open files, but any try to scroll the viewport will make it crash M +5 -1 core/document.cpp M +1 -0 core/generator_pdf/generator_pdf.cpp M +4 -3 ui/pageview.cpp --- branches/work/kde4/kdegraphics/kpdf/core/document.cpp #420379:420380 @@ -1173,6 +1173,10 @@ while ( (pIt != pEnd) && (memoryToFree > 0) ) { AllocatedPixmap * p = *pIt; +#warning this should NOT be needed + // TODO quick way to avoid crashes + if (!d->observers[ p->id ]) return; + if ( d->observers[ p->id ]->canUnloadPixmap( p->page ) ) { // update internal variables @@ -1380,7 +1384,7 @@ QDomElement bookmarkList = doc.createElement( "bookmarkList" ); root.appendChild( bookmarkList ); - for ( uint i = 0; i < pages_vector.count() ; i++ ) + for ( int i = 0; i < pages_vector.count() ; i++ ) { if ( pages_vector[i]->hasBookmark() ) { --- branches/work/kde4/kdegraphics/kpdf/core/generator_pdf/generator_pdf.cpp #420379:420380 @@ -289,6 +289,7 @@ if ( request->async ) { // start the generation into the thread + generatorThread->wait(); generatorThread->startGeneration( request ); return; } --- branches/work/kde4/kdegraphics/kpdf/ui/pageview.cpp #420379:420380 @@ -434,7 +434,8 @@ // create the screen painter. a pixel painted ar contentsX,contentsY // appears to the top-left corner of the scrollview. QPainter screenPainter( viewport() ); - screenPainter.setClipping( true ); +// TODO seems we don't need that in Qt4 +// screenPainter.setClipping( true ); screenPainter.translate( -contentsX(), -contentsY() ); // selectionRect is the normalized mouse selection rect @@ -676,7 +677,7 @@ else verticalScrollBar()->addPage(); } - else if ( d->document->currentPage() < d->items.count() - 1 ) + else if ( (int)d->document->currentPage() < d->items.count() - 1 ) { // more optmized than document->setNextPage and then move view to top DocumentViewport newViewport = d->document->viewport(); @@ -1136,7 +1137,7 @@ else if ( delta <= -120 && !Settings::viewContinuous() && vScroll == verticalScrollBar()->maxValue() ) { // go to next page - if ( d->document->currentPage() < d->items.count() - 1 ) + if ( (int)d->document->currentPage() < d->items.count() - 1 ) { // more optmized than document->setNextPage and then move view to top DocumentViewport newViewport = d->document->viewport();