Bläddra i källkod

LibGUI: Allow moving the TableView selection horizontally with keyboard

Andreas Kling 5 år sedan
förälder
incheckning
2cbe290930

+ 2 - 2
Libraries/LibGUI/AbstractTableView.cpp

@@ -435,7 +435,7 @@ int AbstractTableView::item_count() const
     return model()->row_count();
 }
 
-void AbstractTableView::move_selection(int steps)
+void AbstractTableView::move_selection(int vertical_steps, int horizontal_steps)
 {
     if (!model())
         return;
@@ -443,7 +443,7 @@ void AbstractTableView::move_selection(int steps)
     ModelIndex new_index;
     if (!selection().is_empty()) {
         auto old_index = selection().first();
-        new_index = model.index(old_index.row() + steps, old_index.column());
+        new_index = model.index(old_index.row() + vertical_steps, old_index.column() + horizontal_steps);
     } else {
         new_index = model.index(0, 0);
     }

+ 1 - 1
Libraries/LibGUI/AbstractTableView.h

@@ -78,7 +78,7 @@ public:
 
     virtual void select_all() override;
 
-    void move_selection(int steps);
+    void move_selection(int vertical_steps, int horizontal_steps);
 
 protected:
     virtual ~AbstractTableView() override;

+ 10 - 2
Libraries/LibGUI/TableView.cpp

@@ -162,12 +162,20 @@ void TableView::keydown_event(KeyEvent& event)
         activate_selected();
         return;
     }
+    if (event.key() == KeyCode::Key_Left) {
+        move_selection(0, -1);
+        return;
+    }
+    if (event.key() == KeyCode::Key_Right) {
+        move_selection(0, 1);
+        return;
+    }
     if (event.key() == KeyCode::Key_Up) {
-        move_selection(-1);
+        move_selection(-1, 0);
         return;
     }
     if (event.key() == KeyCode::Key_Down) {
-        move_selection(1);
+        move_selection(1, 0);
         return;
     }
     if (event.key() == KeyCode::Key_PageUp) {