]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinview.cpp
Fix crash when opening a tab during a tooltip is shown
[dolphin.git] / src / views / dolphinview.cpp
index 539fcaaccebd4dafc2336904fc3868aebc03f441..16163c8e91301aadfcf34a336820938944b2d5b1 100644 (file)
@@ -446,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)
@@ -681,6 +694,12 @@ void DolphinView::wheelEvent(QWheelEvent* event)
     }
 }
 
+void DolphinView::hideEvent(QHideEvent* event)
+{
+    hideToolTip();
+    QWidget::hideEvent(event);
+}
+
 void DolphinView::activate()
 {
     setActive(true);
@@ -809,13 +828,13 @@ void DolphinView::slotItemUnhovered(int index)
 
 void DolphinView::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* event)
 {
+    KUrl destUrl;
     KFileItem destItem = fileItemModel()->fileItem(index);
     if (destItem.isNull()) {
         destItem = fileItemModel()->rootItem();
-        if (destItem.isNull()) {
-            kWarning() << "No destination item available for drop operation.";
-            return;
-        }
+        destUrl = url();
+    } else {
+        destUrl = destItem.url();
     }
 
     QDropEvent dropEvent(event->pos().toPoint(),
@@ -824,7 +843,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);
     }
@@ -959,12 +978,7 @@ bool DolphinView::hasSelection() const
 
 KFileItem DolphinView::rootItem() const
 {
-    KFileItem item = m_dirLister->rootItem();
-    if (item.isNull()) {
-        // The directory has not been loaded yet
-        item = KFileItem(KFileItem::Unknown, KFileItem::Unknown, url());
-    }
-    return item;
+    return m_dirLister->rootItem();
 }
 
 void DolphinView::observeCreatedItem(const KUrl& url)