1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp
index 8687872ee..50b57da8a 100644
--- a/src/kitemviews/kitemlistcontroller.cpp
+++ b/src/kitemviews/kitemlistcontroller.cpp
@@ -225,11 +225,11 @@ bool KItemListController::keyPressEvent(QKeyEvent* event)
// Handle the expanding/collapsing of items
if (m_view->supportsItemExpanding() && m_model->isExpandable(index)) {
- if (key == Qt::Key_Right) {
+ if (key == Qt::Key_Right || key == Qt::Key_L) {
if (m_model->setExpanded(index, true)) {
return true;
}
- } else if (key == Qt::Key_Left) {
+ } else if (key == Qt::Key_Left || key == Qt::Key_H) {
if (m_model->setExpanded(index, false)) {
return true;
}
@@ -242,7 +242,10 @@ bool KItemListController::keyPressEvent(QKeyEvent* event)
const bool navigationPressed = key == Qt::Key_Home || key == Qt::Key_End ||
key == Qt::Key_PageUp || key == Qt::Key_PageDown ||
key == Qt::Key_Up || key == Qt::Key_Down ||
- key == Qt::Key_Left || key == Qt::Key_Right;
+ key == Qt::Key_Left || key == Qt::Key_Right ||
+ key == Qt::Key_K || key == Qt::Key_J ||
+ key == Qt::Key_H || key == Qt::Key_L ||
+ (key == Qt::Key_G && !controlPressed);
const int itemCount = m_model->count();
@@ -254,6 +257,10 @@ bool KItemListController::keyPressEvent(QKeyEvent* event)
case Qt::Key_Down: key = Qt::Key_Right; break;
case Qt::Key_Left: key = Qt::Key_Up; break;
case Qt::Key_Right: key = Qt::Key_Down; break;
+ case Qt::Key_K: key = Qt::Key_Left; break;
+ case Qt::Key_J: key = Qt::Key_Right; break;
+ case Qt::Key_H: key = Qt::Key_Up; break;
+ case Qt::Key_L: key = Qt::Key_Down; break;
default: break;
}
}
@@ -279,7 +286,20 @@ bool KItemListController::keyPressEvent(QKeyEvent* event)
m_keyboardAnchorPos = keyboardAnchorPos(index);
break;
+ case Qt::Key_G:
+ if (shiftPressed && !controlPressed) {
+ index = itemCount - 1;
+ m_keyboardAnchorIndex = index;
+ m_keyboardAnchorPos = keyboardAnchorPos(index);
+ } else if (!shiftPressed && !controlPressed) {
+ index = 0;
+ m_keyboardAnchorIndex = index;
+ m_keyboardAnchorPos = keyboardAnchorPos(index);
+ }
+ break;
+
case Qt::Key_Left:
+ case Qt::Key_H:
if (index > 0) {
const int expandedParentsCount = m_model->expandedParentsCount(index);
if (expandedParentsCount == 0) {
@@ -296,6 +316,7 @@ bool KItemListController::keyPressEvent(QKeyEvent* event)
break;
case Qt::Key_Right:
+ case Qt::Key_L:
if (index < itemCount - 1) {
++index;
m_keyboardAnchorIndex = index;
@@ -304,11 +325,13 @@ bool KItemListController::keyPressEvent(QKeyEvent* event)
break;
case Qt::Key_Up:
+ case Qt::Key_K:
updateKeyboardAnchor();
index = previousRowIndex(index);
break;
case Qt::Key_Down:
+ case Qt::Key_J:
updateKeyboardAnchor();
index = nextRowIndex(index);
break;
@@ -465,6 +488,11 @@ bool KItemListController::keyPressEvent(QKeyEvent* event)
if (!shiftPressed) {
m_selectionManager->beginAnchoredSelection(index);
}
+
+ if (key == Qt::Key_G && !controlPressed) {
+ m_selectionManager->clearSelection();
+ m_selectionManager->setSelected(index, 1);
+ }
break;
}
}
|