From 5ec09fdbd66a7aad7e3329767fcaceff7ec976a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89milie=20Feral?= Date: Thu, 21 Nov 2019 10:57:49 +0100 Subject: [PATCH] [apps/shared] ValuesController: fix didChangeCell to reload all cells corresponding to the abscissa cell --- apps/shared/values_controller.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/apps/shared/values_controller.cpp b/apps/shared/values_controller.cpp index ec0a2c4bd..8786a4a3d 100644 --- a/apps/shared/values_controller.cpp +++ b/apps/shared/values_controller.cpp @@ -243,10 +243,23 @@ void ValuesController::didChangeCell(int column, int row) { return; } + // Find the abscissa column corresponding to column + int abscissaColumn = 0; + int nbOfColumns = numberOfColumnsForAbscissaColumn(abscissaColumn); + while (column >= nbOfColumns) { + abscissaColumn = nbOfColumns; + nbOfColumns += numberOfColumnsForAbscissaColumn(abscissaColumn); + } + // Update the memoization of rows linked to the changed cell int nbOfMemoizedColumns = numberOfMemoizedColumn(); - for (int i = column+1; i < column+numberOfColumnsForAbscissaColumn(column); i++) { + int nbOfColumnsForAbscissa = numberOfColumnsForAbscissaColumn(abscissaColumn); + for (int i = abscissaColumn+1; i < abscissaColumn+nbOfColumnsForAbscissa; i++) { int memoizedI = valuesColumnForAbsoluteColumn(i) - m_firstMemoizedColumn; + if (memoizedI < 0 || memoizedI >= nbOfMemoizedColumns) { + // The changed column is out of the memoized table + continue; + } fillMemoizedBuffer(i, row, nbOfMemoizedColumns*memoizedRow+memoizedI); } }