From 466f588a990501325726d6058dbe44a599e86d53 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Tue, 11 Feb 2020 10:49:47 +0100 Subject: [PATCH] [apps/settings] Between two 'didEnterResponderChain', the exam mode page might change the number of rows/the displayed messages. We then have to re-layout the SelectableViewWithMessages to set the right frame to the SelectableTableView. --- apps/settings/sub_menu/exam_mode_controller.cpp | 2 +- apps/settings/sub_menu/selectable_view_with_messages.cpp | 5 +++++ apps/settings/sub_menu/selectable_view_with_messages.h | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/settings/sub_menu/exam_mode_controller.cpp b/apps/settings/sub_menu/exam_mode_controller.cpp index dcd2eee72..561da5e83 100644 --- a/apps/settings/sub_menu/exam_mode_controller.cpp +++ b/apps/settings/sub_menu/exam_mode_controller.cpp @@ -35,7 +35,7 @@ void ExamModeController::didEnterResponderChain(Responder * previousFirstRespond * reload the selection as the number of rows might have also changed. We * force to reload the entire data because they might have changed. */ selectCellAtLocation(0, initialSelectedRow()); - m_selectableTableView.reloadData(); + m_contentView.reload(); // We add a message when the mode exam is on if (GlobalPreferences::sharedGlobalPreferences()->isInExamMode()) { I18n::Message deactivateMessages[] = {I18n::Message::ToDeactivateExamMode1, I18n::Message::ToDeactivateExamMode2, I18n::Message::ToDeactivateExamMode3}; diff --git a/apps/settings/sub_menu/selectable_view_with_messages.cpp b/apps/settings/sub_menu/selectable_view_with_messages.cpp index 2c4bdf6c7..a42248873 100644 --- a/apps/settings/sub_menu/selectable_view_with_messages.cpp +++ b/apps/settings/sub_menu/selectable_view_with_messages.cpp @@ -32,6 +32,11 @@ void SelectableViewWithMessages::setMessages(I18n::Message * m, int numberOfMess layoutSubviews(); } +void SelectableViewWithMessages::reload() { + m_selectableTableView->reloadData(); + layoutSubviews(); +} + View * SelectableViewWithMessages::subviewAtIndex(int index) { assert(index >= 0 && index < numberOfSubviews()); if (index == 0) { diff --git a/apps/settings/sub_menu/selectable_view_with_messages.h b/apps/settings/sub_menu/selectable_view_with_messages.h index 4c5a3d847..afaeb6e46 100644 --- a/apps/settings/sub_menu/selectable_view_with_messages.h +++ b/apps/settings/sub_menu/selectable_view_with_messages.h @@ -11,6 +11,7 @@ public: SelectableViewWithMessages(SelectableTableView * selectableTableView); void drawRect(KDContext * ctx, KDRect rect) const override; void setMessages(I18n::Message * messages, int numberOfMessages); + void reload(); private: int numberOfSubviews() const override { return 1 + m_numberOfMessages; } View * subviewAtIndex(int index) override;