Take into account relative links in pages, and resolve them correctly.

CCBUG: 169001

svn path=/trunk/KDE/kdegraphics/okular/; revision=850145
remotes/origin/old/work/tiff-improvements
Pino Toscano 18 years ago
parent a7a17d4833
commit 730e1f665b
  1. 22
      generators/chm/generator_chm.cpp
  2. 1
      generators/chm/generator_chm.h

@ -48,6 +48,23 @@ static KAboutData createAboutData()
OKULAR_EXPORT_PLUGIN( CHMGenerator, createAboutData() )
static QString absolutePath( const QString &baseUrl, const QString &path )
{
QString absPath;
if ( path.at( 0 ) == QLatin1Char( '/' ) )
{
// already absolute
absPath = path;
}
else
{
KUrl url = KUrl::fromPath( baseUrl );
url.setFileName( path );
absPath = url.toLocalFile();
}
return absPath;
}
CHMGenerator::CHMGenerator( QObject *parent, const QVariantList &args )
: Okular::Generator( parent, args )
{
@ -143,6 +160,7 @@ bool CHMGenerator::doCloseDocument()
void CHMGenerator::preparePageForSyncOperation( int zoom , const QString & url)
{
KUrl pAddress= "ms-its:" + m_fileName + "::" + url;
m_chmUrl = url;
m_syncGen->setZoomFactor(zoom);
m_syncGen->openUrl(pAddress);
m_syncGen->view()->layout();
@ -177,6 +195,7 @@ void CHMGenerator::slotCompleted()
}
m_syncGen->closeUrl();
m_chmUrl = QString();
userMutex()->unlock();
@ -240,6 +259,7 @@ void CHMGenerator::generatePixmap( Okular::PixmapRequest * request )
) ) * 100;
KUrl pAddress= "ms-its:" + m_fileName + "::" + url;
m_chmUrl = url;
m_syncGen->setZoomFactor(zoom);
m_syncGen->view()->resize(requestWidth,requestHeight);
m_request=request;
@ -346,7 +366,7 @@ void CHMGenerator::additionalRequestData()
}
else
{
Okular::DocumentViewport viewport( metaData( "NamedViewport", '/' + url ).toString() );
Okular::DocumentViewport viewport( metaData( "NamedViewport", absolutePath( m_chmUrl, url ) ).toString() );
objRects.push_back(
new Okular::ObjectRect ( Okular::NormalizedRect(r,xScale,yScale),
false,

@ -60,6 +60,7 @@ class CHMGenerator : public Okular::Generator
LCHMFile* m_file;
KHTMLPart *m_syncGen;
QString m_fileName;
QString m_chmUrl;
Okular::PixmapRequest* m_request;
int m_pixmapRequestZoom;
Okular::DocumentInfo* m_docInfo;

Loading…
Cancel
Save