diff --git a/libs/ui/KisDocument.cpp b/libs/ui/KisDocument.cpp --- a/libs/ui/KisDocument.cpp +++ b/libs/ui/KisDocument.cpp @@ -1185,11 +1185,12 @@ setRecovered(true); } else { - if (!(flags & DontAddToRecent)) { - KisPart::instance()->addRecentURLToAllMainWindows(_url); - } - if (ret) { + + if ((flags & DontAddToRecent)) { + KisPart::instance()->addRecentURLToAllMainWindows(_url); + } + // Detect readonly local-files; remote files are assumed to be writable QFileInfo fi(url.toLocalFile()); setReadWrite(fi.isWritable()); @@ -1271,16 +1272,20 @@ dbgUI << localFilePath() << "type:" << typeName; KisMainWindow *window = KisPart::instance()->currentMainwindow(); + KoUpdaterPtr updater; if (window && window->viewManager()) { - KoUpdaterPtr updater = window->viewManager()->createUnthreadedUpdater(i18n("Opening document")); + updater = window->viewManager()->createUnthreadedUpdater(i18n("Opening document")); d->importExportManager->setUpdater(updater); } KisImportExportFilter::ConversionStatus status; status = d->importExportManager->importDocument(localFilePath(), typeName); if (status != KisImportExportFilter::OK) { + if (window && window->viewManager()) { + updater->cancel(); + } QString msg = KisImportExportFilter::conversionStatusString(status); if (!msg.isEmpty()) { DlgLoadMessages dlg(i18nc("@title:window", "Krita"), @@ -1668,18 +1673,20 @@ bool KisDocument::openUrlInternal(const QUrl &url) { - if ( !url.isValid() ) + if ( !url.isValid() ) { return false; + } if (d->m_bAutoDetectedMime) { d->mimeType = QByteArray(); d->m_bAutoDetectedMime = false; } QByteArray mimetype = d->mimeType; - if ( !closeUrl() ) + if ( !closeUrl() ) { return false; + } d->mimeType = mimetype; setUrl(url);