]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/viewextensionsfactory.cpp
Disallow renaming to names containing '/', names being equal to "." or "..".
[dolphin.git] / src / views / viewextensionsfactory.cpp
index 5dabd66cc4ac2e69622919660acdc1a3069407c5..a52871ff447afe1d62c2a1cdc10eed9a51bc82dc 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2009 by Peter Penz <peter.penz@gmx.at>                  *
+ *   Copyright (C) 2009 by Peter Penz <peter.penz19@gmail.com>             *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
  *   it under the terms of the GNU General Public License as published by  *
@@ -33,9 +33,9 @@
 
 #include "dolphin_generalsettings.h"
 
-#include <kdirlister.h>
-#include <kdirmodel.h>
-#include <kfilepreviewgenerator.h>
+#include <KDirLister>
+#include <KDirModel>
+#include <KFilePreviewGenerator>
 #include <QAbstractItemView>
 #include <QApplication>
 
@@ -73,17 +73,21 @@ ViewExtensionsFactory::ViewExtensionsFactory(QAbstractItemView* view,
             this, SLOT(slotZoomLevelChanged()));
     connect(viewModeController, SIGNAL(cancelPreviews()),
             this, SLOT(cancelPreviews()));
+
+    // slotPreviewChanged() is connected as Qt::QueuedConnection to prevent performance
+    // issues when the directory lister changes its URL after the preview-changes have
+    // been applied. Usecase: Switch from directory A having no previews to
+    // directory B with previews (see sequence in DolphinView::setUrl()).
     connect(dolphinViewController->view(), SIGNAL(showPreviewChanged()),
-            this, SLOT(slotShowPreviewChanged()));
+            this, SLOT(slotShowPreviewChanged()),
+            Qt::QueuedConnection);
 
     // initialize selection manager
-    if (settings->showSelectionToggle()) {
-        m_selectionManager = new SelectionManager(view);
-        connect(m_selectionManager, SIGNAL(selectionChanged()),
-                this, SLOT(requestActivation()));
-        connect(viewModeController, SIGNAL(urlChanged(const KUrl&)),
-                m_selectionManager, SLOT(reset()));
-    }
+    m_selectionManager = new SelectionManager(view);
+    connect(m_selectionManager, SIGNAL(selectionChanged()),
+            this, SLOT(requestActivation()));
+    connect(viewModeController, SIGNAL(urlChanged(const KUrl&)),
+            m_selectionManager, SLOT(reset()));
 
     // initialize auto scroller
     m_autoScroller = new DolphinViewAutoScroller(view);
@@ -157,7 +161,7 @@ bool ViewExtensionsFactory::autoFolderExpandingEnabled() const
 bool ViewExtensionsFactory::eventFilter(QObject* watched, QEvent* event)
 {
     Q_UNUSED(watched);
-    if ((event->type() == QEvent::Wheel) && (m_selectionManager != 0)) {
+    if ((event->type() == QEvent::Wheel) && m_selectionManager) {
         m_selectionManager->reset();
     }
     return false;
@@ -166,7 +170,7 @@ bool ViewExtensionsFactory::eventFilter(QObject* watched, QEvent* event)
 void ViewExtensionsFactory::slotZoomLevelChanged()
 {
     m_previewGenerator->updateIcons();
-    if (m_selectionManager != 0) {
+    if (m_selectionManager) {
         m_selectionManager->reset();
     }
 }