summarylogtreecommitdiffstats
path: root/vi.patch
blob: a3c905bca6a6695f63e2af9ad50fcb1ffeed968d (plain)
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;
         }
     }