From 88ab0e686cdba94924ac86e76a472dbcee36799c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Tue, 21 Jan 2020 11:56:56 +0100 Subject: [PATCH] [apps] Less operations in willExitResponderChain if exiting app If nextFirstResponder is nullptr, it means we are exiting the app, so there is no need to relayout, reselect, ... We did it bbefore because a long time ago, we used to keep all apps side by side so they had to be thouroughly cleaned when exiting --- apps/calculation/history_controller.cpp | 3 +++ apps/shared/float_parameter_controller.cpp | 3 +++ apps/shared/function_list_controller.cpp | 1 + apps/shared/interactive_curve_view_controller.cpp | 3 ++- apps/shared/tab_table_controller.cpp | 1 + apps/shared/values_controller.cpp | 1 + apps/statistics/histogram_controller.cpp | 3 ++- apps/statistics/multiple_data_view_controller.cpp | 3 ++- escher/src/selectable_table_view.cpp | 4 +++- 9 files changed, 18 insertions(+), 4 deletions(-) diff --git a/apps/calculation/history_controller.cpp b/apps/calculation/history_controller.cpp index 22488d012..48fa3ec38 100644 --- a/apps/calculation/history_controller.cpp +++ b/apps/calculation/history_controller.cpp @@ -46,6 +46,9 @@ void HistoryController::didBecomeFirstResponder() { } void HistoryController::willExitResponderChain(Responder * nextFirstResponder) { + if (nextFirstResponder == nullptr) { + return; + } if (nextFirstResponder == parentResponder()) { m_selectableTableView.deselectTable(); } diff --git a/apps/shared/float_parameter_controller.cpp b/apps/shared/float_parameter_controller.cpp index 685d7f0ff..97196a6f3 100644 --- a/apps/shared/float_parameter_controller.cpp +++ b/apps/shared/float_parameter_controller.cpp @@ -48,6 +48,9 @@ void FloatParameterController::viewWillAppear() { template void FloatParameterController::willExitResponderChain(Responder * nextFirstResponder) { + if (nextFirstResponder == nullptr) { + return; + } if (parentResponder() == nullptr) { m_selectableTableView.deselectTable(); m_selectableTableView.scrollToCell(0,0); diff --git a/apps/shared/function_list_controller.cpp b/apps/shared/function_list_controller.cpp index 9b92dc46b..75e8b2102 100644 --- a/apps/shared/function_list_controller.cpp +++ b/apps/shared/function_list_controller.cpp @@ -207,6 +207,7 @@ void FunctionListController::didEnterResponderChain(Responder * previousFirstRes void FunctionListController::willExitResponderChain(Responder * nextFirstResponder) { if (nextFirstResponder == tabController()) { + assert(tabController() != nullptr); selectableTableView()->deselectTable(); footer()->setSelectedButton(-1); } diff --git a/apps/shared/interactive_curve_view_controller.cpp b/apps/shared/interactive_curve_view_controller.cpp index 2480f24c1..5c09086c1 100644 --- a/apps/shared/interactive_curve_view_controller.cpp +++ b/apps/shared/interactive_curve_view_controller.cpp @@ -165,7 +165,8 @@ void InteractiveCurveViewController::viewDidDisappear() { } void InteractiveCurveViewController::willExitResponderChain(Responder * nextFirstResponder) { - if (nextFirstResponder == nullptr || nextFirstResponder == tabController()) { + if (nextFirstResponder == tabController()) { + assert(tabController() != nullptr); curveView()->selectMainView(false); header()->setSelectedButton(-1); curveView()->reload(); diff --git a/apps/shared/tab_table_controller.cpp b/apps/shared/tab_table_controller.cpp index 767f0d916..30933ce98 100644 --- a/apps/shared/tab_table_controller.cpp +++ b/apps/shared/tab_table_controller.cpp @@ -17,6 +17,7 @@ void TabTableController::viewWillAppear() { void TabTableController::willExitResponderChain(Responder * nextFirstResponder) { if (nextFirstResponder == tabController()) { + assert(tabController() != nullptr); selectableTableView()->deselectTable(); selectableTableView()->scrollToCell(0,0); } diff --git a/apps/shared/values_controller.cpp b/apps/shared/values_controller.cpp index 8786a4a3d..2b99d788a 100644 --- a/apps/shared/values_controller.cpp +++ b/apps/shared/values_controller.cpp @@ -129,6 +129,7 @@ void ValuesController::didBecomeFirstResponder() { void ValuesController::willExitResponderChain(Responder * nextFirstResponder) { if (nextFirstResponder == tabController()) { + assert(tabController() != nullptr); selectableTableView()->deselectTable(); selectableTableView()->scrollToCell(0,0); header()->setSelectedButton(-1); diff --git a/apps/statistics/histogram_controller.cpp b/apps/statistics/histogram_controller.cpp index d92671801..cb302ce5b 100644 --- a/apps/statistics/histogram_controller.cpp +++ b/apps/statistics/histogram_controller.cpp @@ -70,7 +70,8 @@ void HistogramController::viewWillAppear() { } void HistogramController::willExitResponderChain(Responder * nextFirstResponder) { - if (nextFirstResponder == nullptr || nextFirstResponder == tabController()) { + if (nextFirstResponder == tabController()) { + assert(tabController() != nullptr); if (selectedSeriesIndex() >= 0) { m_view.dataViewAtIndex(selectedSeriesIndex())->setForceOkDisplay(false); } diff --git a/apps/statistics/multiple_data_view_controller.cpp b/apps/statistics/multiple_data_view_controller.cpp index c3c9f7d5c..d21807be5 100644 --- a/apps/statistics/multiple_data_view_controller.cpp +++ b/apps/statistics/multiple_data_view_controller.cpp @@ -79,7 +79,8 @@ void MultipleDataViewController::didEnterResponderChain(Responder * firstRespond } void MultipleDataViewController::willExitResponderChain(Responder * nextFirstResponder) { - if (nextFirstResponder == nullptr || nextFirstResponder == tabController()) { + if (nextFirstResponder == tabController()) { + assert(tabController() != nullptr); assert(*m_selectedSeriesIndex >= 0); multipleDataView()->deselectDataView(*m_selectedSeriesIndex); multipleDataView()->setDisplayBanner(false); diff --git a/escher/src/selectable_table_view.cpp b/escher/src/selectable_table_view.cpp index c7922a42c..bb07591f0 100644 --- a/escher/src/selectable_table_view.cpp +++ b/escher/src/selectable_table_view.cpp @@ -58,7 +58,9 @@ void SelectableTableView::didEnterResponderChain(Responder * previousFirstRespon } void SelectableTableView::willExitResponderChain(Responder * nextFirstResponder) { - unhighlightSelectedCell(); + if (nextFirstResponder != nullptr) { + unhighlightSelectedCell(); + } } void SelectableTableView::deselectTable(bool withinTemporarySelection) {