┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/kitemviews/kitemlistcontainer.cpp15
-rw-r--r--src/kitemviews/kitemlistcontainer.h1
-rw-r--r--src/kitemviews/kitemlistcontroller.cpp9
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;
}