diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 6e2b81390c..ebc8dc2683 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -1370,7 +1370,7 @@ void DolphinMainWindow::setupDockWidgets() infoDock->setObjectName("infoDock"); infoDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); Panel* infoPanel = new InformationPanel(infoDock); - connect(infoPanel, SIGNAL(urlActivated(KUrl)), activeViewContainer(), SLOT(setUrl(KUrl))); + connect(infoPanel, SIGNAL(urlActivated(KUrl)), this, SLOT(handleUrl(KUrl))); infoDock->setWidget(infoPanel); QAction* infoAction = infoDock->toggleViewAction(); @@ -1660,6 +1660,16 @@ void DolphinMainWindow::setUrlAsCaption(const KUrl& url) setCaption(caption); } +void DolphinMainWindow::handleUrl(const KUrl& url) +{ + if (KProtocolManager::supportsListing(url)) { + activeViewContainer()->setUrl(url); + } + else { + new KRun(url, this); + } +} + QString DolphinMainWindow::squeezedText(const QString& text) const { const QFontMetrics fm = fontMetrics(); diff --git a/src/dolphinmainwindow.h b/src/dolphinmainwindow.h index e9332194f5..0b4f90d19f 100644 --- a/src/dolphinmainwindow.h +++ b/src/dolphinmainwindow.h @@ -406,6 +406,12 @@ private slots: */ void showSearchOptions(); + /** + * If the URL can be listed open it in the current view, otherwise + * run it through KRun. + */ + void handleUrl(const KUrl& url); + private: DolphinMainWindow(int id); void init(); @@ -460,7 +466,7 @@ private: QString tabProperty(const QString& property, int tabIndex) const; /** - * Sets the window caption to url.fileName() if this is non-empty, + * Sets the window caption to url.fileName() if this is non-empty, * "/" if the URL is "file:///", and url.protocol() otherwise. */ void setUrlAsCaption(const KUrl& url); diff --git a/src/panels/information/informationpanelcontent.h b/src/panels/information/informationpanelcontent.h index 6c08e50d2e..923bb762f6 100644 --- a/src/panels/information/informationpanelcontent.h +++ b/src/panels/information/informationpanelcontent.h @@ -67,6 +67,9 @@ public: */ void configureSettings(); +signals: + void urlActivated( const KUrl& url ); + protected: /** @see QObject::eventFilter() */ virtual bool eventFilter(QObject* obj, QEvent* event);