]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinview.cpp
restore the focus of the active column after the reloading has been finished
[dolphin.git] / src / dolphinview.cpp
index 31ee64fed30ace145f5218def93d855bfa30955b..0b6c32811dec3117bf48a21f312961850b6a8987 100644 (file)
@@ -93,8 +93,8 @@ DolphinView::DolphinView(QWidget* parent,
             this, SIGNAL(urlChanged(const KUrl&)));
     connect(m_controller, SIGNAL(requestContextMenu(const QPoint&)),
             this, SLOT(openContextMenu(const QPoint&)));
-    connect(m_controller, SIGNAL(urlsDropped(const KUrl::List&, const QModelIndex&, QWidget*)),
-            this, SLOT(dropUrls(const KUrl::List&, const QModelIndex&, QWidget*)));
+    connect(m_controller, SIGNAL(urlsDropped(const KUrl::List&, const KUrl&, const QModelIndex&, QWidget*)),
+            this, SLOT(dropUrls(const KUrl::List&, const KUrl&, const QModelIndex&, QWidget*)));
     connect(m_controller, SIGNAL(sortingChanged(DolphinView::Sorting)),
             this, SLOT(updateSorting(DolphinView::Sorting)));
     connect(m_controller, SIGNAL(sortOrderChanged(Qt::SortOrder)),
@@ -425,7 +425,7 @@ void DolphinView::setUrl(const KUrl& url)
 void DolphinView::mouseReleaseEvent(QMouseEvent* event)
 {
     QWidget::mouseReleaseEvent(event);
-    setActive(true);;
+    setActive(true);
 }
 void DolphinView::activate()
 {
@@ -505,41 +505,31 @@ void DolphinView::startDirLister(const KUrl& url, bool reload)
 
     m_dirLister->stop();
 
-    bool openDir = true;
     bool keepOldDirs = isColumnViewActive() && !m_initializeColumnView;
     m_initializeColumnView = false;
 
     if (keepOldDirs) {
+        // keeping old directories is only necessary for hierarchical views
+        // like the column view
         if (reload) {
-            keepOldDirs = false;
-
-            const KUrl& dirListerUrl = m_dirLister->url();
-            if (dirListerUrl.isValid()) {
-                const KUrl::List dirs = m_dirLister->directories();
-                KUrl url;
-                foreach(url, dirs) {
-                    m_dirLister->updateDirectory(url);
-                }
-                openDir = false;
-            }
+            // for the column view it is not enough to reload the directory lister,
+            // so this task is delegated to the column view directly
+            m_columnView->reload();
         } else if (m_dirLister->directories().contains(url)) {
             // The dir lister contains the directory already, so
-            // KDirLister::openUrl() may not been invoked twice.
+            // KDirLister::openUrl() may not get invoked twice.
             m_dirLister->updateDirectory(url);
-            openDir = false;
         } else {
             const KUrl& dirListerUrl = m_dirLister->url();
             if ((dirListerUrl == url) || !m_dirLister->url().isParentOf(url)) {
                 // The current URL is not a child of the dir lister
                 // URL. This may happen when e. g. a place has been selected
                 // and hence the view must be reset.
-                keepOldDirs = false;
+                m_dirLister->openUrl(url, false, false);
             }
         }
-    }
-
-    if (openDir) {
-        m_dirLister->openUrl(url, keepOldDirs, reload);
+    } else {
+        m_dirLister->openUrl(url, false, reload);
     }
 }
 
@@ -655,12 +645,13 @@ void DolphinView::openContextMenu(const QPoint& pos)
 }
 
 void DolphinView::dropUrls(const KUrl::List& urls,
-                           const QModelIndex& index,
+                           const KUrl& destPath,
+                           const QModelIndex& destIndex,
                            QWidget* source)
 {
     KFileItem directory;
-    if (isValidNameIndex(index)) {
-        KFileItem item = fileItem(index);
+    if (isValidNameIndex(destIndex)) {
+        KFileItem item = fileItem(destIndex);
         Q_ASSERT(!item.isNull());
         if (item.isDir()) {
             // the URLs are dropped above a directory
@@ -675,7 +666,7 @@ void DolphinView::dropUrls(const KUrl::List& urls,
     }
 
     const KUrl& destination = (directory.isNull()) ?
-                              url() : directory.url();
+                              destPath : directory.url();
     dropUrls(urls, destination);
 }