X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/20587e7f1402c050156aa717413e742d226a3406..b1c9b5126d:/src/folderexpander.cpp diff --git a/src/folderexpander.cpp b/src/folderexpander.cpp index 89abb91b1..7fe775944 100644 --- a/src/folderexpander.cpp +++ b/src/folderexpander.cpp @@ -20,7 +20,7 @@ #include "folderexpander.h" #include "dolphinview.h" -#include "dolphinsettings.h" +#include "settings/dolphinsettings.h" #include "dolphin_generalsettings.h" #include @@ -34,7 +34,6 @@ #include #include -#include FolderExpander::FolderExpander(QAbstractItemView *view, QSortFilterProxyModel *proxyModel) : QObject(view), @@ -54,7 +53,7 @@ FolderExpander::FolderExpander(QAbstractItemView *view, QSortFilterProxyModel *p kWarning() << "Need a proxyModel!"; return; // Not valid. } - 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. @@ -63,7 +62,7 @@ FolderExpander::FolderExpander(QAbstractItemView *view, QSortFilterProxyModel *p // Initialise auto-expand timer. m_autoExpandTriggerTimer = new QTimer(this); m_autoExpandTriggerTimer->setSingleShot(true); - connect(m_autoExpandTriggerTimer, SIGNAL(timeout()), + connect(m_autoExpandTriggerTimer, SIGNAL(timeout()), this, SLOT(autoExpandTimeout())); // The view scrolling complicates matters, so we want to @@ -94,13 +93,6 @@ FolderExpander::~FolderExpander() void FolderExpander::viewScrolled() { if (m_autoExpandTriggerTimer->isActive()) { - kDebug() << "Resetting time due to scrolling!"; - // (Re-)set the timer while we're scrolling the view - // (or it's being scrolled by some external mechanism). - // TODO - experiment with this. Cancelling the timer, - // or adding a "penalty" on top of AUTO_EXPAND_DELAY - // might work more nicely when drilling down through the sidebar - // tree. m_autoExpandTriggerTimer->start(AUTO_EXPAND_DELAY); } } @@ -116,23 +108,23 @@ void FolderExpander::autoExpandTimeout() // needing to pass in m_proxyModel that has a KDirModel as its sourceModel() ... ? QModelIndex proxyIndexToExpand = m_view->indexAt(m_autoExpandPos); QModelIndex indexToExpand = m_proxyModel->mapToSource(proxyIndexToExpand); - KDirModel* m_dirModel = qobject_cast< KDirModel* >(m_proxyModel->sourceModel()); + 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; - - kDebug() << "Need to expand: " << itemToExpand.targetUrl() << " isDir? = " << itemToExpand.isDir(); + } if (itemToExpand.isDir()) { - QTreeView *viewAsTreeView = qobject_cast(m_view); - if (viewAsTreeView != 0) { + QTreeView* treeView = qobject_cast(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 { - // Enter this directory. emit enterDir(proxyIndexToExpand); } }