]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinviewcontainer.cpp
Merge branch 'release/20.12'
[dolphin.git] / src / dolphinviewcontainer.cpp
index 9761f108fc84602ae83f51a3807151e215fbe333..7260d2c4c0d222f480f1b31779aa2230ce8c5625 100644 (file)
@@ -118,6 +118,10 @@ DolphinViewContainer::DolphinViewContainer(const QUrl& url, QWidget* parent) :
             m_urlNavigator.get(), &DolphinUrlNavigator::setLocationUrl);
     connect(m_urlNavigator.get(), &DolphinUrlNavigator::urlChanged,
             this, &DolphinViewContainer::slotUrlNavigatorLocationChanged);
+    connect(m_urlNavigator.get(), &DolphinUrlNavigator::urlAboutToBeChanged,
+            this, &DolphinViewContainer::slotUrlNavigatorLocationAboutToBeChanged);
+    connect(m_urlNavigator.get(), &DolphinUrlNavigator::urlSelectionRequested,
+            this, &DolphinViewContainer::slotUrlSelectionRequested);
     connect(m_view, &DolphinView::writeStateChanged,
             this, &DolphinViewContainer::writeStateChanged);
     connect(m_view, &DolphinView::requestItemInfo,
@@ -291,25 +295,24 @@ void DolphinViewContainer::connectUrlNavigator(DolphinUrlNavigator *urlNavigator
     Q_CHECK_PTR(m_view);
 
     urlNavigator->setLocationUrl(m_view->url());
-    urlNavigator->setActive(isActive());
     if (m_urlNavigatorVisualState) {
         urlNavigator->setVisualState(*m_urlNavigatorVisualState.get());
         m_urlNavigatorVisualState.reset();
     }
+    urlNavigator->setActive(isActive());
 
+    // Url changes are still done via m_urlNavigator.
+    connect(urlNavigator, &DolphinUrlNavigator::urlChanged,
+            m_urlNavigator.get(), &DolphinUrlNavigator::setLocationUrl);
+    connect(urlNavigator, &DolphinUrlNavigator::urlsDropped,
+            this, [=](const QUrl &destination, QDropEvent *event) {
+        m_view->dropUrls(destination, event, urlNavigator->dropWidget());
+    });
+    // Aside from these, only visual things need to be connected.
     connect(m_view, &DolphinView::urlChanged,
             urlNavigator, &DolphinUrlNavigator::setLocationUrl);
-    connect(urlNavigator, &DolphinUrlNavigator::urlChanged,
-            this, &DolphinViewContainer::slotUrlNavigatorLocationChanged);
     connect(urlNavigator, &DolphinUrlNavigator::activated,
             this, &DolphinViewContainer::activate);
-    connect(urlNavigator, &DolphinUrlNavigator::urlAboutToBeChanged,
-            this, &DolphinViewContainer::slotUrlNavigatorLocationAboutToBeChanged);
-    connect(urlNavigator, &DolphinUrlNavigator::urlSelectionRequested,
-            this, &DolphinViewContainer::slotUrlSelectionRequested);
-    connect(urlNavigator, &DolphinUrlNavigator::urlsDropped, this, [=](const QUrl &destination, QDropEvent *event) {
-        m_view->dropUrls(destination, event, urlNavigator->dropWidget());
-    });
 
     m_urlNavigatorConnected = urlNavigator;
 }
@@ -320,18 +323,14 @@ void DolphinViewContainer::disconnectUrlNavigator()
         return;
     }
 
+    disconnect(m_urlNavigatorConnected, &DolphinUrlNavigator::urlChanged,
+               m_urlNavigator.get(), &DolphinUrlNavigator::setLocationUrl);
+    disconnect(m_urlNavigatorConnected, &DolphinUrlNavigator::urlsDropped,
+               this, nullptr);
     disconnect(m_view, &DolphinView::urlChanged,
                m_urlNavigatorConnected, &DolphinUrlNavigator::setLocationUrl);
-    disconnect(m_urlNavigatorConnected, &DolphinUrlNavigator::urlChanged,
-               this, &DolphinViewContainer::slotUrlNavigatorLocationChanged);
     disconnect(m_urlNavigatorConnected, &DolphinUrlNavigator::activated,
                this, &DolphinViewContainer::activate);
-    disconnect(m_urlNavigatorConnected, &DolphinUrlNavigator::urlAboutToBeChanged,
-               this, &DolphinViewContainer::slotUrlNavigatorLocationAboutToBeChanged);
-    disconnect(m_urlNavigatorConnected, &DolphinUrlNavigator::urlSelectionRequested,
-               this, &DolphinViewContainer::slotUrlSelectionRequested);
-    disconnect(m_urlNavigatorConnected, &DolphinUrlNavigator::urlsDropped,
-               this, nullptr);
 
     m_urlNavigatorVisualState = m_urlNavigatorConnected->visualState();
     m_urlNavigatorConnected = nullptr;
@@ -639,6 +638,7 @@ void DolphinViewContainer::slotItemActivated(const KFileItem& item)
     }
 
     KIO::OpenUrlJob *job = new KIO::OpenUrlJob(item.targetUrl());
+    job->setRunExecutables(true);
     job->setUiDelegate(new KIO::JobUiDelegate(KJobUiDelegate::AutoHandlingEnabled, this));
     job->setShowOpenOrExecuteDialog(true);
     job->start();