X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/540eeb0030470d50a61e192d9348043ffd10f056..60d555fa55f025f3ecaa82cf95f012cbbbeb8ddc:/src/dolphinviewcontainer.cpp diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp index 95b16448a..cffffd70b 100644 --- a/src/dolphinviewcontainer.cpp +++ b/src/dolphinviewcontainer.cpp @@ -39,8 +39,9 @@ #include #include #include -#include +#include #include +#include #include #include #include @@ -154,6 +155,8 @@ DolphinViewContainer::DolphinViewContainer(DolphinMainWindow* mainWindow, connect(m_urlNavigator, SIGNAL(urlChanged(const KUrl&)), this, SLOT(restoreView(const KUrl&))); + connect(m_urlNavigator, SIGNAL(historyChanged()), + this, SLOT(slotHistoryChanged())); m_statusBar = new DolphinStatusBar(this, m_view); @@ -281,7 +284,7 @@ void DolphinViewContainer::slotDirListerCompleted() // it is unclear whether writing is supported m_isFolderWritable = true; } else { - KonqFileItemCapabilities capabilities(KFileItemList() << item); + KFileItemListProperties capabilities(KFileItemList() << item); m_isFolderWritable = capabilities.supportsWriting(); } @@ -401,12 +404,18 @@ void DolphinViewContainer::restoreView(const KUrl& url) const QString browser = config.readEntry("BrowserApplication"); if (!browser.isEmpty()) { app = browser; + if (app.startsWith('!')) { + // a literal command has been configured, remove the '!' prefix + app = app.mid(1); + } } } else { showErrorMessage(i18nc("@info:status", "Protocol not supported by Dolphin, Konqueror has been launched")); } - const QString command = app + ' ' + url.pathOrUrl(); + + QString secureUrl = KShell::quoteArg(url.pathOrUrl()); + const QString command = app + ' ' + secureUrl; KRun::runCommand(command, app, app, this); } else { showErrorMessage(i18nc("@info:status", "Invalid protocol")); @@ -445,6 +454,17 @@ void DolphinViewContainer::saveUrlCompletionMode(KGlobalSettings::Completion com settings.save(); } +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->historyUrl(index - 1); + m_view->activateItem(url); + } +} + void DolphinViewContainer::slotItemTriggered(const KFileItem& item) { KUrl url = item.targetUrl();