mirror of
https://invent.kde.org/system/dolphin
synced 2024-09-19 00:11:21 +00:00
Stat URLs before opening them to make sure they are actually dirs we can list. Otherwise use KRun.
svn path=/trunk/KDE/kdebase/apps/; revision=1103520
This commit is contained in:
parent
a80da4153a
commit
fa24cc8e11
|
@ -121,7 +121,8 @@ DolphinMainWindow::DolphinMainWindow(int id) :
|
|||
m_actionHandler(0),
|
||||
m_remoteEncoding(0),
|
||||
m_settingsDialog(0),
|
||||
m_captionStatJob(0)
|
||||
m_captionStatJob(0),
|
||||
m_lastHandleUrlStatJob(0)
|
||||
{
|
||||
setObjectName("Dolphin#");
|
||||
|
||||
|
@ -1132,7 +1133,28 @@ void DolphinMainWindow::showSearchOptions()
|
|||
|
||||
void DolphinMainWindow::handleUrl(const KUrl& url)
|
||||
{
|
||||
if (KProtocolManager::supportsListing(url)) {
|
||||
delete m_lastHandleUrlStatJob;
|
||||
m_lastHandleUrlStatJob = 0;
|
||||
|
||||
if (url.isLocalFile() && QFileInfo(url.toLocalFile()).isDir()) {
|
||||
activeViewContainer()->setUrl(url);
|
||||
} else if (KProtocolManager::supportsListing(url)) {
|
||||
// stat the URL to see if it is a dir or not
|
||||
m_lastHandleUrlStatJob = KIO::stat(url, KIO::HideProgressInfo);
|
||||
connect(m_lastHandleUrlStatJob, SIGNAL(result(KJob*)),
|
||||
this, SLOT(slotHandleUrlStatFinished(KJob*)));
|
||||
|
||||
} else {
|
||||
new KRun(url, this);
|
||||
}
|
||||
}
|
||||
|
||||
void DolphinMainWindow::slotHandleUrlStatFinished(KJob* job)
|
||||
{
|
||||
m_lastHandleUrlStatJob = 0;
|
||||
const KIO::UDSEntry entry = static_cast<KIO::StatJob*>(job)->statResult();
|
||||
const KUrl url = static_cast<KIO::StatJob*>(job)->url();
|
||||
if ( entry.isDir() ) {
|
||||
activeViewContainer()->setUrl(url);
|
||||
} else {
|
||||
new KRun(url, this);
|
||||
|
|
|
@ -423,6 +423,12 @@ private slots:
|
|||
*/
|
||||
void handleUrl(const KUrl& url);
|
||||
|
||||
/**
|
||||
* handleUrl() can trigger a stat job to see if the url can actually
|
||||
* be listed.
|
||||
*/
|
||||
void slotHandleUrlStatFinished(KJob* job);
|
||||
|
||||
/**
|
||||
* setUrlAsCaption() will trigger a stat job which reports its result in
|
||||
* this slot.
|
||||
|
@ -555,6 +561,7 @@ private:
|
|||
QPointer<DolphinSettingsDialog> m_settingsDialog;
|
||||
|
||||
KJob* m_captionStatJob;
|
||||
KJob* m_lastHandleUrlStatJob;
|
||||
};
|
||||
|
||||
inline DolphinViewContainer* DolphinMainWindow::activeViewContainer() const
|
||||
|
|
Loading…
Reference in a new issue