Index: src/readonlypart.cpp =================================================================== --- src/readonlypart.cpp +++ src/readonlypart.cpp @@ -141,17 +141,17 @@ return false; } d->m_arguments = args; - setUrl(url); + d->m_targetUrl = url; d->m_file.clear(); - if (d->m_url.isLocalFile()) { - d->m_file = d->m_url.toLocalFile(); + if (d->m_targetUrl.isLocalFile()) { + d->m_file = d->m_targetUrl.toLocalFile(); return d->openLocalFile(); } else if (KProtocolInfo::protocolClass(url.scheme()) == QLatin1String(":local")) { // Maybe we can use a "local path", to avoid a temp copy? KIO::JobFlags flags = d->m_showProgressInfo ? KIO::DefaultFlags : KIO::HideProgressInfo; - d->m_statJob = KIO::mostLocalUrl(d->m_url, flags); + d->m_statJob = KIO::mostLocalUrl(d->m_targetUrl, flags); KJobWidgets::setWindow(d->m_statJob, widget()); connect(d->m_statJob, SIGNAL(result(KJob*)), this, SLOT(_k_slotStatJobFinished(KJob*))); return true; @@ -178,7 +178,7 @@ // get the mimetype of the file // using findByUrl() to avoid another string -> url conversion QMimeDatabase db; - QMimeType mime = db.mimeTypeForUrl(m_url); + QMimeType mime = db.mimeTypeForUrl(m_targetUrl); if (!mime.isDefault()) { m_arguments.setMimeType(mime.name()); m_bAutoDetectedMime = true; @@ -188,6 +188,7 @@ if (ret) { emit q->setWindowCaption(m_url.toDisplayString()); emit q->completed(); + q->setUrl(m_targetUrl); } else { emit q->canceled(QString()); } @@ -199,11 +200,11 @@ Q_Q(ReadOnlyPart); m_bTemp = true; // Use same extension as remote file. This is important for mimetype-determination (e.g. koffice) - QString fileName = m_url.fileName(); + QString fileName = m_targetUrl.fileName(); QFileInfo fileInfo(fileName); QString ext = fileInfo.completeSuffix(); QString extension; - if (!ext.isEmpty() && !m_url.hasQuery()) { // not if the URL has a query, e.g. cgi.pl?something + if (!ext.isEmpty() && !m_targetUrl.hasQuery()) { // not if the URL has a query, e.g. cgi.pl?something extension = QLatin1Char('.') + ext; // keep the '.' } QTemporaryFile tempFile(QDir::tempPath() + QLatin1Char('/') + q->componentData().componentName() + QLatin1String("XXXXXX") + extension); @@ -214,7 +215,7 @@ QUrl destURL = QUrl::fromLocalFile(m_file); KIO::JobFlags flags = m_showProgressInfo ? KIO::DefaultFlags : KIO::HideProgressInfo; flags |= KIO::Overwrite; - m_job = KIO::file_copy(m_url, destURL, 0600, flags); + m_job = KIO::file_copy(m_targetUrl, destURL, 0600, flags); KJobWidgets::setWindow(m_job, q->widget()); emit q->started(m_job); QObject::connect(m_job, SIGNAL(result(KJob*)), q, SLOT(_k_slotJobFinished(KJob*))); @@ -285,8 +286,9 @@ emit q->canceled(job->errorString()); } else { if (q->openFile()) { - emit q->setWindowCaption(m_url.toDisplayString()); + emit q->setWindowCaption(m_targetUrl.toDisplayString()); emit q->completed(); + q->setUrl(m_targetUrl); } else { emit q->canceled(QString()); } Index: src/readonlypart_p.h =================================================================== --- src/readonlypart_p.h +++ src/readonlypart_p.h @@ -81,6 +81,11 @@ bool m_bAutoDetectedMime : 1; /** + * URL passed to openUrl(). The part will attemp to load it. + */ + QUrl m_targetUrl; + + /** * Remote (or local) url - the one displayed to the user. */ QUrl m_url;