m_dirLister(dirLister),
m_proxyModel(proxyModel),
m_iconManager(0),
- m_toolTipManager(0)
+ m_toolTipManager(0),
+ m_rootUrl(),
+ m_currentItemUrl()
{
- setFocusPolicy(Qt::StrongFocus);
m_topLayout = new QVBoxLayout(this);
m_topLayout->setSpacing(0);
m_topLayout->setMargin(0);
connect(m_controller, SIGNAL(viewportEntered()),
this, SLOT(clearHoverInformation()));
+ connect(m_dirLister, SIGNAL(completed()),
+ this, SLOT(restoreCurrentItem()));
+
applyViewProperties(url);
m_topLayout->addWidget(itemView());
}
void DolphinView::setUrl(const KUrl& url)
{
+ // remember current item candidate (see restoreCurrentItem())
+ m_currentItemUrl = url;
updateView(url, KUrl());
}
return;
}
- // TODO: the m_isContextMenuOpen check is a workaround for Qt-issue xxxxxx
+ // TODO: the m_isContextMenuOpen check is a workaround for Qt-issue 207192
if (item.isNull() || m_isContextMenuOpen) {
return;
}
m_toolTipManager->hideTip();
}
- m_isContextMenuOpen = true; // TODO: workaround for Qt-issue xxxxxx
+ m_isContextMenuOpen = true; // TODO: workaround for Qt-issue 207192
emit requestContextMenu(item, url());
m_isContextMenuOpen = false;
}
}
}
+
+void DolphinView::restoreCurrentItem()
+{
+ const QModelIndex dirIndex = m_dolphinModel->indexForUrl(m_currentItemUrl);
+ if (dirIndex.isValid()) {
+ const QModelIndex proxyIndex = m_proxyModel->mapFromSource(dirIndex);
+ QAbstractItemView* view = itemView();
+ const bool clearSelection = !hasSelection();
+ view->setCurrentIndex(proxyIndex);
+ if (clearSelection) {
+ view->clearSelection();
+ }
+ }
+}
+
void DolphinView::loadDirectory(const KUrl& url, bool reload)
{
if (!url.isValid()) {