┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/dolphincolumnviewcontainer.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2010-05-29 19:31:46 +0000
committerPeter Penz <[email protected]>2010-05-29 19:31:46 +0000
commit2b0a0fb6d44f2a4343e9301ef4ece32ac4bdb75b (patch)
treebb98c5a3415e2263045edb41b89cf2ef44a8ccc4 /src/dolphincolumnviewcontainer.cpp
parentabf29a89efc569db4e51d582eec95d7740db36ad (diff)
Fix keyboard navigation issues in the column view
BUG: 236039 svn path=/trunk/KDE/kdebase/apps/; revision=1132120
Diffstat (limited to 'src/dolphincolumnviewcontainer.cpp')
-rw-r--r--src/dolphincolumnviewcontainer.cpp58
1 files changed, 29 insertions, 29 deletions
diff --git a/src/dolphincolumnviewcontainer.cpp b/src/dolphincolumnviewcontainer.cpp
index 421f195d5..344d38d8a 100644
--- a/src/dolphincolumnviewcontainer.cpp
+++ b/src/dolphincolumnviewcontainer.cpp
@@ -73,7 +73,7 @@ DolphinColumnViewContainer::DolphinColumnViewContainer(QWidget* parent,
DolphinColumnView* column = new DolphinColumnView(viewport(), this, viewModeController->url());
m_columns.append(column);
- setActiveColumnIndex(0);
+ requestActivation(column);
m_emptyViewport = new QFrame(viewport());
m_emptyViewport->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);
@@ -175,12 +175,7 @@ void DolphinColumnViewContainer::showColumn(const KUrl& url)
}
}
- // set the last column as active column without modifying the controller
- // and hence the history
- m_columns[m_index]->setActive(false);
- m_index = columnIndex;
- m_columns[m_index]->setActive(true);
- assureVisibleActiveColumn();
+ requestActivation(m_columns[columnIndex]);
}
void DolphinColumnViewContainer::mousePressEvent(QMouseEvent* event)
@@ -192,7 +187,9 @@ void DolphinColumnViewContainer::mousePressEvent(QMouseEvent* event)
void DolphinColumnViewContainer::keyPressEvent(QKeyEvent* event)
{
if (event->key() == Qt::Key_Left) {
- setActiveColumnIndex(m_index - 1);
+ if (m_index > 0) {
+ requestActivation(m_columns[m_index - 1]);
+ }
} else {
QScrollArea::keyPressEvent(event);
}
@@ -250,24 +247,6 @@ void DolphinColumnViewContainer::updateActiveUrl()
m_dolphinViewController->requestUrlChange(activeUrl);
}
-void DolphinColumnViewContainer::setActiveColumnIndex(int index)
-{
- if ((m_index == index) || (index < 0) || (index >= m_columns.count())) {
- return;
- }
-
- const bool hasActiveColumn = (m_index >= 0);
- if (hasActiveColumn) {
- m_columns[m_index]->setActive(false);
- }
-
- m_index = index;
- m_columns[m_index]->setActive(true);
-
- assureVisibleActiveColumn();
- m_activeUrlTimer->start(); // calls slot updateActiveUrl()
-}
-
void DolphinColumnViewContainer::layoutColumns()
{
const int gap = 4;
@@ -342,18 +321,39 @@ void DolphinColumnViewContainer::assureVisibleActiveColumn()
void DolphinColumnViewContainer::requestActivation(DolphinColumnView* column)
{
- m_dolphinViewController->setItemView(column);
+ if (m_dolphinViewController->itemView() != column) {
+ m_dolphinViewController->setItemView(column);
+ }
+ if (focusProxy() != column) {
+ setFocusProxy(column);
+ }
+
if (column->isActive()) {
assureVisibleActiveColumn();
} else {
+ // Deactivate the currently active column
+ if (m_index >= 0) {
+ m_columns[m_index]->setActive(false);
+ }
+
+ // Get the index of the column that should get activated
int index = 0;
foreach (DolphinColumnView* currColumn, m_columns) {
if (currColumn == column) {
- setActiveColumnIndex(index);
- return;
+ break;
}
++index;
}
+
+ Q_ASSERT(index != m_index);
+ Q_ASSERT(index < m_columns.count());
+
+ // Activate the requested column
+ m_index = index;
+ m_columns[m_index]->setActive(true);
+
+ assureVisibleActiveColumn();
+ m_activeUrlTimer->start(); // calls slot updateActiveUrl()
}
}