]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/folderexpander.cpp
Don't do a pre-process wrapping of the Information Panel headline, if it is a rich...
[dolphin.git] / src / folderexpander.cpp
index 574f0a3045090e03b2e57a50423e4dd2e474cdfb..a2dfb137b29a2bfdc4c4ab45f7c2f5b807408e94 100644 (file)
  ***************************************************************************/
 
 #include "folderexpander.h"
-#include "dolphinview.h"
-
-#include "dolphinsettings.h"
-#include "dolphin_generalsettings.h"
 
 #include <QtCore/QTimer>
 #include <QtGui/QAbstractItemView>
@@ -43,20 +39,15 @@ FolderExpander::FolderExpander(QAbstractItemView *view, QSortFilterProxyModel *p
     m_autoExpandTriggerTimer(0),
     m_autoExpandPos()
 {
-    // Validation.  If these fail, the event filter is never
-    // installed on the view and the FolderExpander is inactive.
     if (m_view == 0)  {
-        kWarning() << "Need a view!";
-        return; // Not valid.
+        return;
     }
     if (m_proxyModel == 0)  {
-        kWarning() << "Need a proxyModel!";
-        return; // Not valid.
+        return;
     }
-    KDirModel *m_dirModel = qobject_cast< KDirModel* >( m_proxyModel->sourceModel() );
+    KDirModel *m_dirModel = qobject_cast<KDirModel*>(m_proxyModel->sourceModel());
     if (m_dirModel == 0) {
-        kWarning() << "Expected m_proxyModel's sourceModel() to be a KDirModel!";
-        return; // Not valid.
+        return;
     }
 
     // Initialise auto-expand timer.
@@ -110,20 +101,22 @@ void FolderExpander::autoExpandTimeout()
     QModelIndex indexToExpand = m_proxyModel->mapToSource(proxyIndexToExpand);
     KDirModel* m_dirModel = qobject_cast< KDirModel* >(m_proxyModel->sourceModel());
     Q_ASSERT(m_dirModel != 0);
-    KFileItem itemToExpand = m_dirModel->itemForIndex(indexToExpand );
+    KFileItem itemToExpand = m_dirModel->itemForIndex(indexToExpand);
 
-    if (itemToExpand.isNull()) {
+    if (itemToExpand.isNull() || itemToExpand == m_dirModel->itemForIndex(QModelIndex())) {
+        // The second clause occurs when we are expanding the folder represented
+        // by the view, which is a case we should ignore (#182618).
         return;
     }
 
     if (itemToExpand.isDir()) {
-        QTreeView *viewAsTreeView = qobject_cast<QTreeView*>(m_view);
-        if (viewAsTreeView != 0) {
+        QTreeView* treeView = qobject_cast<QTreeView*>(m_view);
+        if ((treeView != 0) && treeView->itemsExpandable()) {
             // Toggle expanded state of this directory.
-            viewAsTreeView->setExpanded(proxyIndexToExpand, !viewAsTreeView->isExpanded(proxyIndexToExpand));
+            treeView->setExpanded(proxyIndexToExpand, !treeView->isExpanded(proxyIndexToExpand));
         }
         else {
-            emit enterDir(proxyIndexToExpand, m_view);
+            emit enterDir(proxyIndexToExpand);
         }
     }
 }