***************************************************************************/
#include "folderexpander.h"
-#include "dolphinview.h"
-
-#include "dolphinsettings.h"
-#include "dolphin_generalsettings.h"
#include <QtCore/QTimer>
#include <QtGui/QAbstractItemView>
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.
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
// 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;
}
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);
}
}
}