X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/e536466ac75e7fa3cfdc18728596beac36996128..7eeb8dba6aeba09aa3dfa7fa5f0b00840d4d8317:/src/dolphinviewcontainer.cpp diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp index 8f4427cb9..184dd2bee 100644 --- a/src/dolphinviewcontainer.cpp +++ b/src/dolphinviewcontainer.cpp @@ -28,6 +28,7 @@ #include #include +#include #include #include #include @@ -307,7 +308,6 @@ void DolphinViewContainer::slotDirListerCompleted() } else { updateStatusBar(); } - QMetaObject::invokeMethod(this, "restoreViewState", Qt::QueuedConnection); // Enable the 'File'->'Create New...' menu only if the directory // supports writing. @@ -369,13 +369,6 @@ void DolphinViewContainer::setNameFilter(const QString& nameFilter) delayedStatusBarUpdate(); } -void DolphinViewContainer::restoreViewState() -{ - QByteArray locationState = m_urlNavigator->locationState(); - QDataStream stream(&locationState, QIODevice::ReadOnly); - m_view->restoreState(stream); -} - void DolphinViewContainer::activate() { setActive(true); @@ -458,12 +451,11 @@ void DolphinViewContainer::saveUrlCompletionMode(KGlobalSettings::Completion com void DolphinViewContainer::slotHistoryChanged() { - const int index = m_urlNavigator->historyIndex(); - if (index > 0) { - // The "Go Forward" action is enabled. Try to mark - // the previous directory as active item: - const KUrl url = m_urlNavigator->locationUrl(index - 1); - m_view->activateItem(url); + QByteArray locationState = m_urlNavigator->locationState(); + + if (!locationState.isEmpty()) { + QDataStream stream(&locationState, QIODevice::ReadOnly); + m_view->restoreState(stream); } } @@ -492,6 +484,16 @@ void DolphinViewContainer::slotItemTriggered(const KFileItem& item) } } + if (item.mimetype() == "application/x-desktop") { + // redirect to the url in Type=Link desktop files + KDesktopFile desktopFile(url.toLocalFile()); + if (desktopFile.hasLinkType()) { + url = desktopFile.readUrl(); + m_view->setUrl(url); + return; + } + } + item.run(); }