diff --git a/lib/contextmanager.cpp b/lib/contextmanager.cpp --- a/lib/contextmanager.cpp +++ b/lib/contextmanager.cpp @@ -130,6 +130,10 @@ connect(d->mSelectionModel, &QItemSelectionModel::currentChanged, this, &ContextManager::slotCurrentChanged); d->mSelectedFileItemListNeedsUpdate = false; + + connect(DocumentFactory::instance(), &DocumentFactory::readyForDirListerStart, [this](const QUrl &urlReady) { + setCurrentDirUrl(urlReady.adjusted(QUrl::RemoveFilename)); + }); } ContextManager::~ContextManager() @@ -300,7 +304,7 @@ { GV_RETURN_IF_FAIL(url.isValid()); d->mUrlToSelect = url; - setCurrentDirUrl(url.adjusted(QUrl::RemoveFilename)); + setCurrentUrl(url); selectUrlToSelect(); } diff --git a/lib/document/document.cpp b/lib/document/document.cpp --- a/lib/document/document.cpp +++ b/lib/document/document.cpp @@ -157,8 +157,6 @@ d->mImpl = nullptr; d->mUrl = url; d->mKeepRawData = false; - - reload(); } Document::~Document() diff --git a/lib/document/documentfactory.h b/lib/document/documentfactory.h --- a/lib/document/documentfactory.h +++ b/lib/document/documentfactory.h @@ -79,6 +79,7 @@ void modifiedDocumentListChanged(); void documentChanged(const QUrl&); void documentBusyStateChanged(const QUrl&, bool); + void readyForDirListerStart(const QUrl &url); private Q_SLOTS: void slotLoaded(const QUrl&); diff --git a/lib/document/documentfactory.cpp b/lib/document/documentfactory.cpp --- a/lib/document/documentfactory.cpp +++ b/lib/document/documentfactory.cpp @@ -184,6 +184,22 @@ connect(doc, &Document::modified, this, &DocumentFactory::slotModified); connect(doc, &Document::busyChanged, this, &DocumentFactory::slotBusyChanged); + // Make sure that an url passed as command line argument is loaded + // and shown before a possibly long running dirlister on a slow + // network device is started. So start the dirlister after url is + // loaded or failed to load. + connect(doc, &Document::loaded, [this, url]() { + emit readyForDirListerStart(url); + }); + connect(doc, &Document::loadingFailed, [this, url]() { + emit readyForDirListerStart(url); + }); + connect(doc, &Document::downSampledImageReady, [this, url]() { + emit readyForDirListerStart(url); + }); + + doc->reload(); + // Create DocumentInfo instance info = new DocumentInfo; Document::Ptr docPtr(doc);