From 5f15b3791825abc10cf8123e13ca41a9b58895a2 Mon Sep 17 00:00:00 2001 From: Antonin Loubiere <40536532+AntoninLoubiere@users.noreply.github.com> Date: Fri, 12 Jun 2020 23:58:49 +0200 Subject: [PATCH] [Feature] Add Toolbox / Table shortcuts (#327) --- escher/src/nested_menu_controller.cpp | 6 ++++++ escher/src/selectable_table_view.cpp | 12 ++++++++++++ 2 files changed, 18 insertions(+) diff --git a/escher/src/nested_menu_controller.cpp b/escher/src/nested_menu_controller.cpp index 821fd1769..929c7b6c2 100644 --- a/escher/src/nested_menu_controller.cpp +++ b/escher/src/nested_menu_controller.cpp @@ -140,6 +140,12 @@ bool NestedMenuController::handleEventForRow(Ion::Events::Event event, int rowIn if ((event == Ion::Events::Back || event == Ion::Events::Left) && depth > 0) { return returnToPreviousMenu(); } + if (event == Ion::Events::ShiftLeft && depth > 0) { + for (int i = depth; i > 0; i--) { + returnToPreviousMenu(); + } + return true; + } if (selectedRow() < 0) { return false; } diff --git a/escher/src/selectable_table_view.cpp b/escher/src/selectable_table_view.cpp index bb07591f0..3d359fcf5 100644 --- a/escher/src/selectable_table_view.cpp +++ b/escher/src/selectable_table_view.cpp @@ -128,15 +128,27 @@ bool SelectableTableView::handleEvent(Ion::Events::Event event) { if (event == Ion::Events::Down) { return selectCellAtLocation(selectedColumn(), selectedRow()+1); } + if (event == Ion::Events::ShiftDown && selectedRow() < dataSource()->numberOfRows()-1) { + return selectCellAtLocation(selectedColumn(), dataSource()->numberOfRows()-1); + } if (event == Ion::Events::Up) { return selectCellAtLocation(selectedColumn(), selectedRow()-1); } + if (event == Ion::Events::ShiftUp && selectedRow() > 0) { + return selectCellAtLocation(selectedColumn(), 0); + } if (event == Ion::Events::Left) { return selectCellAtLocation(selectedColumn()-1, selectedRow()); } + if (event == Ion::Events::ShiftLeft && selectedColumn() > 0) { + return selectCellAtLocation(0, selectedRow()); + } if (event == Ion::Events::Right) { return selectCellAtLocation(selectedColumn()+1, selectedRow()); } + if (event == Ion::Events::ShiftRight && selectedColumn() < dataSource()->numberOfColumns()-1) { + return selectCellAtLocation(dataSource()->numberOfColumns()-1, selectedRow()); + } if (event == Ion::Events::Copy || event == Ion::Events::Cut) { HighlightCell * cell = selectedCell(); if (cell == nullptr) {