]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinviewcontainer.cpp
Properly KIO::stat instead of simply using the KFileItem constructor when
[dolphin.git] / src / dolphinviewcontainer.cpp
index 89cf6cdbd0a7eda65c54e99a1cdf59b121e67c9b..9d33329e5c53f20964e5cc0465bfffffaebd9434 100644 (file)
 #include <kprotocolmanager.h>
 
 #include <QtGui/QApplication>
-#include <QtGui/QClipboard>
 #include <QtGui/QKeyEvent>
 #include <QtGui/QItemSelection>
 #include <QtGui/QBoxLayout>
 #include <QtCore/QTimer>
 #include <QtGui/QScrollBar>
 
+#include <kdesktopfile.h>
 #include <kfileitemdelegate.h>
 #include <kfileplacesmodel.h>
 #include <kglobalsettings.h>
 #include <kurlnavigator.h>
 #include <krun.h>
 
+#include "dolphin_generalsettings.h"
 #include "dolphinmodel.h"
 #include "dolphincolumnview.h"
-#include "dolphincontroller.h"
+#include "dolphinviewcontroller.h"
 #include "dolphinmainwindow.h"
 #include "dolphindirlister.h"
 #include "dolphinsortfilterproxymodel.h"
 #include "dolphiniconsview.h"
 #include "draganddrophelper.h"
 #include "filterbar.h"
+#include "settings/dolphinsettings.h"
 #include "statusbar/dolphinstatusbar.h"
+#include "viewmodecontroller.h"
 #include "viewproperties.h"
-#include "settings/dolphinsettings.h"
-#include "dolphin_generalsettings.h"
 
 DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) :
     QWidget(parent),
@@ -278,7 +279,7 @@ void DolphinViewContainer::updateStatusBar()
 void DolphinViewContainer::initializeProgress()
 {
     if (url().protocol() == "nepomuksearch") {
-        // The Nepomuk IO-slave does not provide any progress information. Give
+        // The Nepomuk IO-slave does not provide progress information right away. Give
         // an immediate hint to the user that a searching is done:
         m_statusBar->setProgressText(i18nc("@info", "Searching..."));
         m_statusBar->setProgress(-1);
@@ -432,7 +433,13 @@ void DolphinViewContainer::redirect(const KUrl& oldUrl, const KUrl& newUrl)
     Q_UNUSED(oldUrl);
     const bool block = m_urlNavigator->signalsBlocked();
     m_urlNavigator->blockSignals(true);
+
+    // Assure that the location state is reset for redirection URLs. This
+    // allows to skip redirection URLs when going back or forward in the
+    // URL history.
+    m_urlNavigator->saveLocationState(QByteArray());
     m_urlNavigator->setLocationUrl(newUrl);
+
     m_urlNavigator->blockSignals(block);
 }
 
@@ -483,6 +490,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();
 }