]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphintabwidget.cpp
Merge remote-tracking branch 'origin/master' into frameworks
[dolphin.git] / src / dolphintabwidget.cpp
index ea71b48566c4feb1d1589d2f5c50480aeb66360d..42a8aff09e63c8a7d4f644cb06b7d12297b7e488 100644 (file)
@@ -27,7 +27,7 @@
 
 #include <QApplication>
 #include <KConfigGroup>
-#include <KIcon>
+#include <kio/global.h>
 #include <KRun>
 
 DolphinTabWidget::DolphinTabWidget(QWidget* parent) :
@@ -72,7 +72,7 @@ void DolphinTabWidget::saveProperties(KConfigGroup& group) const
 
     for (int i = 0; i < tabCount; ++i) {
         const DolphinTabPage* tabPage = tabPageAt(i);
-        group.writeEntry("Tab " % QString::number(i), tabPage->saveState());
+        group.writeEntry("Tab Data " % QString::number(i), tabPage->saveState());
     }
 }
 
@@ -83,8 +83,15 @@ void DolphinTabWidget::readProperties(const KConfigGroup& group)
         if (i >= count()) {
             openNewActivatedTab();
         }
-        const QByteArray state = group.readEntry("Tab " % QString::number(i), QByteArray());
-        tabPageAt(i)->restoreState(state);
+        if (group.hasKey("Tab Data " % QString::number(i))) {
+            // Tab state created with Dolphin > 4.14.x
+            const QByteArray state = group.readEntry("Tab Data " % QString::number(i), QByteArray());
+            tabPageAt(i)->restoreState(state);
+        } else {
+            // Tab state created with Dolphin <= 4.14.x
+            const QByteArray state = group.readEntry("Tab " % QString::number(i), QByteArray());
+            tabPageAt(i)->restoreStateV1(state);
+        }
     }
 
     const int index = group.readEntry("Active Tab Index", 0);
@@ -139,7 +146,7 @@ void DolphinTabWidget::openNewTab(const KUrl& primaryUrl, const KUrl& secondaryU
             this, SIGNAL(activeViewChanged(DolphinViewContainer*)));
     connect(tabPage, SIGNAL(activeViewUrlChanged(KUrl)),
             this, SLOT(tabUrlChanged(KUrl)));
-    addTab(tabPage, KIcon(KMimeType::iconNameForUrl(primaryUrl)), tabName(primaryUrl));
+    addTab(tabPage, QIcon::fromTheme(KIO::iconNameForUrl(primaryUrl)), tabName(primaryUrl));
 
     if (focusWidget) {
         // The DolphinViewContainer grabbed the keyboard focus. As the tab is opened
@@ -294,13 +301,21 @@ void DolphinTabWidget::tabUrlChanged(const KUrl& url)
     const int index = indexOf(qobject_cast<QWidget*>(sender()));
     if (index >= 0) {
         tabBar()->setTabText(index, tabName(url));
-        tabBar()->setTabIcon(index, KIcon(KMimeType::iconNameForUrl(url)));
+        tabBar()->setTabIcon(index, QIcon::fromTheme(KIO::iconNameForUrl(url)));
+
+        // Emit the currentUrlChanged signal if the url of the current tab has been changed.
+        if (index == currentIndex()) {
+            emit currentUrlChanged(url);
+        }
     }
 }
 
 void DolphinTabWidget::currentTabChanged(int index)
 {
-    emit activeViewChanged(tabPageAt(index)->activeViewContainer());
+    DolphinViewContainer* viewContainer = tabPageAt(index)->activeViewContainer();
+    emit activeViewChanged(viewContainer);
+    emit currentUrlChanged(viewContainer->url());
+    viewContainer->view()->setFocus();
 }
 
 void DolphinTabWidget::tabInserted(int index)