]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinview.cpp
Don't trigger assert when switching to details-view
[dolphin.git] / src / views / dolphinview.cpp
index a31bf566dc920e9684cc099138c5bf65825fa3cc..54787d28fda0808c529f2332c86b06f0536d4690 100644 (file)
@@ -137,9 +137,6 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) :
 
     KItemListController* controller = m_container->controller();
     controller->setSelectionBehavior(KItemListController::MultiSelection);
-    if (GeneralSettings::autoExpandFolders()) {
-        controller->setAutoActivationDelay(750);
-    }
     connect(controller, SIGNAL(itemActivated(int)), this, SLOT(slotItemActivated(int)));
     connect(controller, SIGNAL(itemsActivated(QSet<int>)), this, SLOT(slotItemsActivated(QSet<int>)));
     connect(controller, SIGNAL(itemMiddleClicked(int)), this, SLOT(slotItemMiddleClicked(int)));
@@ -449,11 +446,24 @@ void DolphinView::stopLoading()
     m_dirLister->stop();
 }
 
-void DolphinView::refresh()
+void DolphinView::readSettings()
 {
+    const int oldZoomLevel = m_container->zoomLevel();
+    
     GeneralSettings::self()->readConfig();
-    m_container->refresh();
+    m_container->readSettings();
     applyViewProperties();
+    
+    const int newZoomLevel = m_container->zoomLevel();
+    if (newZoomLevel != oldZoomLevel) {
+        emit zoomLevelChanged(newZoomLevel, oldZoomLevel);
+    }
+}
+
+void DolphinView::writeSettings()
+{
+    GeneralSettings::self()->writeConfig();
+    m_container->writeSettings();
 }
 
 void DolphinView::setNameFilter(const QString& nameFilter)
@@ -684,6 +694,12 @@ void DolphinView::wheelEvent(QWheelEvent* event)
     }
 }
 
+void DolphinView::hideEvent(QHideEvent* event)
+{
+    hideToolTip();
+    QWidget::hideEvent(event);
+}
+
 void DolphinView::activate()
 {
     setActive(true);
@@ -812,13 +828,16 @@ void DolphinView::slotItemUnhovered(int index)
 
 void DolphinView::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* event)
 {
+    KUrl destUrl;
     KFileItem destItem = fileItemModel()->fileItem(index);
-    if (destItem.isNull()) {
+    if (destItem.isNull() || (!destItem.isDir() && !destItem.isDesktopFile())) {
+        // Use the URL of the view as drop target if the item is no directory
+        // or desktop-file
         destItem = fileItemModel()->rootItem();
-        if (destItem.isNull()) {
-            kWarning() << "No destination item available for drop operation.";
-            return;
-        }
+        destUrl = url();
+    } else {
+        // The item represents a directory or desktop-file
+        destUrl = destItem.url();
     }
 
     QDropEvent dropEvent(event->pos().toPoint(),
@@ -827,7 +846,7 @@ void DolphinView::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* even
                          event->buttons(),
                          event->modifiers());
 
-    const QString error = DragAndDropHelper::dropUrls(destItem, &dropEvent);
+    const QString error = DragAndDropHelper::dropUrls(destItem, destUrl, &dropEvent);
     if (!error.isEmpty()) {
         emit errorMessage(error);
     }
@@ -866,16 +885,6 @@ void DolphinView::emitSelectionChangedSignal()
     emit selectionChanged(selectedItems());
 }
 
-void DolphinView::dropUrls(const KFileItem& destItem,
-                           const KUrl& destPath,
-                           QDropEvent* event)
-{
-    Q_UNUSED(destItem);
-    Q_UNUSED(destPath);
-    markPastedUrlsAsSelected(event->mimeData());
-    //DragAndDropHelper::instance().dropUrls(destItem, destPath, event, this);
-}
-
 void DolphinView::updateSorting(DolphinView::Sorting sorting)
 {
     ViewProperties props(url());
@@ -1159,19 +1168,6 @@ void DolphinView::applyViewProperties()
 
     const Mode mode = props.viewMode();
     if (m_mode != mode) {
-        // Prevent an animated transition of the position and size of the items when switching
-        // the view-mode by temporary clearing the model and updating it again after the view mode
-        // has been modified.
-        const bool restoreModel = (model->count() > 0);
-        if (restoreModel) {
-            const int currentItemIndex = m_container->controller()->selectionManager()->currentItem();
-            if (currentItemIndex >= 0) {
-                m_currentItemUrl = model->fileItem(currentItemIndex).url();
-            }
-            m_selectedUrls = selectedItems().urlList();
-            model->clear();
-        }
-
         const Mode previousMode = m_mode;
         m_mode = mode;
 
@@ -1192,10 +1188,6 @@ void DolphinView::applyViewProperties()
         if (m_container->zoomLevel() != oldZoomLevel) {
             emit zoomLevelChanged(m_container->zoomLevel(), oldZoomLevel);
         }
-
-        if (restoreModel) {
-            loadDirectory(url());
-        }
     }
 
     const bool hiddenFilesShown = props.hiddenFilesShown();