From 016a68d469190ea6c7f5db9e0e4a81e166772661 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Tue, 28 Jan 2020 11:54:57 +0100 Subject: [PATCH] [apps/solver] Do not select "User variables used" row --- apps/solver/solutions_controller.cpp | 14 +++++++++++++- apps/solver/solutions_controller.h | 5 +++-- escher/Makefile | 1 - .../escher/selectable_table_view_delegate.h | 2 +- escher/src/selectable_table_view_delegate.cpp | 4 ---- 5 files changed, 17 insertions(+), 9 deletions(-) delete mode 100644 escher/src/selectable_table_view_delegate.cpp diff --git a/apps/solver/solutions_controller.cpp b/apps/solver/solutions_controller.cpp index d13c58847..043ff227f 100644 --- a/apps/solver/solutions_controller.cpp +++ b/apps/solver/solutions_controller.cpp @@ -23,7 +23,7 @@ constexpr KDColor SolutionsController::ContentView::k_backgroundColor; SolutionsController::ContentView::ContentView(SolutionsController * controller) : m_warningMessageView0(KDFont::SmallFont, I18n::Message::Default, 0.5f, 0.5f, KDColorBlack, k_backgroundColor), m_warningMessageView1(KDFont::SmallFont, I18n::Message::Default, 0.5f, 0.5f, KDColorBlack, k_backgroundColor), - m_selectableTableView(controller), + m_selectableTableView(controller, controller, controller, controller), m_displayWarningMoreSolutions(false) { m_selectableTableView.setBackgroundColor(k_backgroundColor); @@ -341,6 +341,18 @@ void SolutionsController::didBecomeFirstResponder() { Container::activeApp()->setFirstResponder(m_contentView.selectableTableView()); } +void SolutionsController::tableViewDidChangeSelection(SelectableTableView * t, int previousSelectedCellX, int previousSelectedCellY, bool withinTemporarySelection) { + const int rowOfUserVariablesMessage = userVariablesMessageRow(); + if (rowOfUserVariablesMessage < 0) { + return; + } + assert(rowOfUserVariablesMessage > 0); + // Forbid the selection of the messages row + if (t->selectedRow() == rowOfUserVariablesMessage) { + t->selectCellAtLocation(t->selectedColumn(), rowOfUserVariablesMessage + (rowOfUserVariablesMessage < previousSelectedCellY ? -1 : 1)); + } +} + int SolutionsController::userVariablesMessageRow() const { assert(m_equationStore->numberOfUserVariables() >= 0); return m_equationStore->numberOfUserVariables() == 0 ? -1 : m_equationStore->numberOfSolutions(); diff --git a/apps/solver/solutions_controller.h b/apps/solver/solutions_controller.h index 85d864522..b631a038f 100644 --- a/apps/solver/solutions_controller.h +++ b/apps/solver/solutions_controller.h @@ -8,7 +8,7 @@ namespace Solver { -class SolutionsController : public ViewController, public AlternateEmptyViewDefaultDelegate, public SelectableTableViewDataSource, public TableViewDataSource { +class SolutionsController : public ViewController, public AlternateEmptyViewDefaultDelegate, public SelectableTableViewDataSource, public TableViewDataSource, public SelectableTableViewDelegate { public: SolutionsController(Responder * parentResponder, EquationStore * equationStore); void setShouldReplaceFuncionsButNotSymbols(bool shouldReplaceFuncionsButNotSymbols) { m_shouldReplaceFunctionsButNotSymbols = shouldReplaceFuncionsButNotSymbols; } @@ -35,7 +35,8 @@ public: int typeAtLocation(int i, int j) override; /* Responder */ void didBecomeFirstResponder() override; - + /* SelectableTableViewDelegate */ + void tableViewDidChangeSelection(SelectableTableView * t, int previousSelectedCellX, int previousSelectedCellY, bool withinTemporarySelection = false) override; private: class ContentView : public View { public: diff --git a/escher/Makefile b/escher/Makefile index d62b0e732..ea6a9267c 100644 --- a/escher/Makefile +++ b/escher/Makefile @@ -58,7 +58,6 @@ escher_src += $(addprefix escher/src/,\ scrollable_expression_view.cpp \ scrollable_view.cpp \ selectable_table_view.cpp \ - selectable_table_view_delegate.cpp \ simple_list_view_data_source.cpp \ simple_table_view_data_source.cpp \ solid_color_view.cpp \ diff --git a/escher/include/escher/selectable_table_view_delegate.h b/escher/include/escher/selectable_table_view_delegate.h index f8413478b..c7e20ee7b 100644 --- a/escher/include/escher/selectable_table_view_delegate.h +++ b/escher/include/escher/selectable_table_view_delegate.h @@ -12,7 +12,7 @@ public: * we deselect the table before re-layouting the entire table and re-select * the previous selected cell. We might implement different course of action * when the selection change is 'real' or within temporary selection. */ - virtual void tableViewDidChangeSelection(SelectableTableView * t, int previousSelectedCellX, int previousSelectedCellY, bool withinTemporarySelection = false); + virtual void tableViewDidChangeSelection(SelectableTableView * t, int previousSelectedCellX, int previousSelectedCellY, bool withinTemporarySelection = false) {} }; #endif diff --git a/escher/src/selectable_table_view_delegate.cpp b/escher/src/selectable_table_view_delegate.cpp deleted file mode 100644 index 25da1557a..000000000 --- a/escher/src/selectable_table_view_delegate.cpp +++ /dev/null @@ -1,4 +0,0 @@ -#include - -void SelectableTableViewDelegate::tableViewDidChangeSelection(SelectableTableView * t, int previousSelectedCellX, int previousSelectedCellY, bool withinTemporarySelection) { -}