diff --git a/apps/home/controller.cpp b/apps/home/controller.cpp index 9ba0ee2c2..2faa2e488 100644 --- a/apps/home/controller.cpp +++ b/apps/home/controller.cpp @@ -110,17 +110,6 @@ bool Controller::handleEvent(Ion::Events::Event event) { return true; } - if((numberOfIcons() % k_numberOfColumns) - && event == Ion::Events::Down - && selectionDataSource()->selectedRow() == numberOfRows() - 2 - && (numberOfIcons() % k_numberOfColumns) <= selectionDataSource()->selectedColumn()){ - return m_view.selectableTableView()->selectCellAtLocation(numberOfIcons() % k_numberOfColumns - 1, numberOfRows()-1); - } - - if(m_view.selectableTableView()->handleEvent(event, false)){ - return true; - } - if (event == Ion::Events::Home || event == Ion::Events::Back) { return m_view.selectableTableView()->selectCellAtLocation(0,0); } @@ -137,8 +126,9 @@ bool Controller::handleEvent(Ion::Events::Event event) { void Controller::didBecomeFirstResponder() { if (selectionDataSource()->selectedRow() == -1) { - m_view.selectableTableView()->selectCellAtLocation(0, 0, false); + selectionDataSource()->selectCellAtLocation(0, 0); } + Container::activeApp()->setFirstResponder(m_view.selectableTableView()); } void Controller::viewWillAppear() { diff --git a/escher/include/escher/selectable_table_view.h b/escher/include/escher/selectable_table_view.h index 23994cdfa..6e4fb7ac0 100644 --- a/escher/include/escher/selectable_table_view.h +++ b/escher/include/escher/selectable_table_view.h @@ -25,7 +25,7 @@ public: void selectRow(int j); void selectColumn(int i); void reloadData(bool setFirstResponder = true); - bool handleEvent(Ion::Events::Event event, bool setFirstResponder = true); + bool handleEvent(Ion::Events::Event event) override; void didEnterResponderChain(Responder * previousFirstResponder) override; void willExitResponderChain(Responder * nextFirstResponder) override; void deselectTable(bool withinTemporarySelection = false); diff --git a/escher/src/selectable_table_view.cpp b/escher/src/selectable_table_view.cpp index 0b92f7502..27f4bd395 100644 --- a/escher/src/selectable_table_view.cpp +++ b/escher/src/selectable_table_view.cpp @@ -132,30 +132,30 @@ HighlightCell * SelectableTableView::selectedCell() { return cellAtLocation(selectedColumn(), selectedRow()); } -bool SelectableTableView::handleEvent(Ion::Events::Event event, bool setFirstResponder) { +bool SelectableTableView::handleEvent(Ion::Events::Event event) { if (event == Ion::Events::Down) { - return selectCellAtLocation(selectedColumn(), selectedRow()+1, setFirstResponder); + return selectCellAtLocation(selectedColumn(), selectedRow()+1); } if ((event == Ion::Events::ShiftDown || event == Ion::Events::AlphaDown) && selectedRow() < dataSource()->numberOfRows()-1) { - return selectCellAtLocation(selectedColumn(), dataSource()->numberOfRows()-1, setFirstResponder); + return selectCellAtLocation(selectedColumn(), dataSource()->numberOfRows()-1); } if (event == Ion::Events::Up) { - return selectCellAtLocation(selectedColumn(), selectedRow()-1, setFirstResponder); + return selectCellAtLocation(selectedColumn(), selectedRow()-1); } if ((event == Ion::Events::ShiftUp || event == Ion::Events::AlphaUp) && selectedRow() > 0) { - return selectCellAtLocation(selectedColumn(), 0, setFirstResponder); + return selectCellAtLocation(selectedColumn(), 0); } if (event == Ion::Events::Left) { - return selectCellAtLocation(selectedColumn()-1, selectedRow(), setFirstResponder); + return selectCellAtLocation(selectedColumn()-1, selectedRow()); } if ((event == Ion::Events::ShiftLeft || event == Ion::Events::AlphaLeft) && selectedColumn() > 0) { - return selectCellAtLocation(0, selectedRow(), setFirstResponder); + return selectCellAtLocation(0, selectedRow()); } if (event == Ion::Events::Right) { - return selectCellAtLocation(selectedColumn()+1, selectedRow(), setFirstResponder); + return selectCellAtLocation(selectedColumn()+1, selectedRow()); } if ((event == Ion::Events::ShiftRight || event == Ion::Events::AlphaRight) && selectedColumn() < dataSource()->numberOfColumns()-1) { - return selectCellAtLocation(dataSource()->numberOfColumns()-1, selectedRow(), setFirstResponder); + return selectCellAtLocation(dataSource()->numberOfColumns()-1, selectedRow()); } if (event == Ion::Events::Copy || event == Ion::Events::Cut) { HighlightCell * cell = selectedCell();