diff options
Diffstat (limited to 'src/kitemviews')
| -rw-r--r-- | src/kitemviews/kitemlistcontainer.cpp | 15 | ||||
| -rw-r--r-- | src/kitemviews/kitemlistcontainer.h | 1 | ||||
| -rw-r--r-- | src/kitemviews/kitemlistcontroller.cpp | 9 |
3 files changed, 24 insertions, 1 deletions
diff --git a/src/kitemviews/kitemlistcontainer.cpp b/src/kitemviews/kitemlistcontainer.cpp index e247df0c7..906f44640 100644 --- a/src/kitemviews/kitemlistcontainer.cpp +++ b/src/kitemviews/kitemlistcontainer.cpp @@ -26,6 +26,7 @@ #include "kitemlistview.h" #include "kitemmodelbase.h" +#include <QApplication> #include <QGraphicsScene> #include <QGraphicsView> #include <QPropertyAnimation> @@ -82,6 +83,20 @@ KItemListController* KItemListContainer::controller() const return m_controller; } +void KItemListContainer::keyPressEvent(QKeyEvent* event) +{ + // TODO: We should find a better way to handle the key press events in the view. + // The reasons why we need this hack are: + // 1. Without reimplementing keyPressEvent() here, the event would not reach the QGraphicsView. + // 2. By default, the KItemListView does not have the keyboard focus in the QGraphicsScene, so + // simply sending the event to the QGraphicsView which is the KItemListContainer's viewport + // does not work. + KItemListView* view = m_controller->view(); + if (view) { + QApplication::sendEvent(view, event); + } +} + void KItemListContainer::showEvent(QShowEvent* event) { QAbstractScrollArea::showEvent(event); diff --git a/src/kitemviews/kitemlistcontainer.h b/src/kitemviews/kitemlistcontainer.h index 4994eb249..e71a7b083 100644 --- a/src/kitemviews/kitemlistcontainer.h +++ b/src/kitemviews/kitemlistcontainer.h @@ -49,6 +49,7 @@ public: KItemListController* controller() const; protected: + virtual void keyPressEvent(QKeyEvent* event); virtual void showEvent(QShowEvent* event); virtual void resizeEvent(QResizeEvent* event); virtual void scrollContentsBy(int dx, int dy); diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp index dcd62ad52..79e42e413 100644 --- a/src/kitemviews/kitemlistcontroller.cpp +++ b/src/kitemviews/kitemlistcontroller.cpp @@ -119,7 +119,14 @@ bool KItemListController::hideEvent(QHideEvent* event) bool KItemListController::keyPressEvent(QKeyEvent* event) { - Q_UNUSED(event); + switch (event->key()) { + case Qt::Key_Home: + m_selectionManager->setCurrentItem(0); + break; + case Qt::Key_End: + m_selectionManager->setCurrentItem(m_model->count() - 1); + break; + } return false; } |
