DolphinColumnView navigation works more intuitively.

If no item is selected then pressing right moves to a column view with child url, instead of the first index.
BUG:263110
REVIEW:101449
This commit is contained in:
Matthias Fuchs 2011-05-27 18:00:00 +02:00
parent 009535d910
commit e508685bae
2 changed files with 13 additions and 2 deletions

View file

@ -338,6 +338,7 @@ void DolphinColumnView::mousePressEvent(QMouseEvent* event)
void DolphinColumnView::keyPressEvent(QKeyEvent* event)
{
const bool hadSelection = selectionModel()->hasSelection();
DolphinTreeView::keyPressEvent(event);
DolphinViewController* controller = m_container->m_dolphinViewController;
@ -346,7 +347,15 @@ void DolphinColumnView::keyPressEvent(QKeyEvent* event)
case Qt::Key_Right: {
// Special key handling for the column: A Key_Right should
// open a new column for the currently selected folder.
const QModelIndex dolphinModelIndex = m_proxyModel->mapToSource(currentIndex());
QModelIndex dolphinModelIndex = m_proxyModel->mapToSource(currentIndex());
// If there is no selection we automatically move to the child url
// instead of the first directory.
// See BUG:263110
if (!hadSelection && !childUrl().isEmpty()) {
dolphinModelIndex = m_dolphinModel->indexForUrl(childUrl());
}
const KFileItem item = m_dolphinModel->itemForIndex(dolphinModelIndex);
if (!item.isNull() && item.isDir()) {
controller->emitItemTriggered(item);

View file

@ -61,8 +61,10 @@ public:
/**
* Sets the directory URL of the child column that is shown next to
* this column. This property is only used for a visual indication
* this column. This property is used for a visual indication
* of the shown directory, it does not trigger a loading of the model.
* When no url is selected and the user presses right, then child
* url will be used as column.
*/
void setChildUrl(const KUrl& url);
KUrl childUrl() const;