[calculation] Revert "HistoryViewCell: remove useless m_expandedCalculation"

When scrolling up and down, only 'setCalculation' is called by
'willDisplayCellForIndex' - and not 'cellDidSelectSubview'. So a new cell
should be informed of the expanded state in 'setCalculation'.
This commit is contained in:
Émilie Feral
2020-01-03 12:19:21 +01:00
committed by Léa Saviot
parent 80d8e8eead
commit 73a8ec24f2
3 changed files with 5 additions and 4 deletions

View File

@@ -180,7 +180,7 @@ int HistoryController::reusableCellCount(int type) {
void HistoryController::willDisplayCellForIndex(HighlightCell * cell, int index) {
HistoryViewCell * myCell = (HistoryViewCell *)cell;
myCell->setCalculation(calculationAtIndex(index).pointer());
myCell->setCalculation(calculationAtIndex(index).pointer(), index == selectedRow() && selectedSubviewType() == SubviewType::Output);
myCell->setEven(index%2 == 0);
myCell->setHighlighted(myCell->isHighlighted());
}

View File

@@ -144,9 +144,9 @@ void HistoryViewCell::layoutSubviews(bool force) {
force);
}
void HistoryViewCell::setCalculation(Calculation * calculation) {
void HistoryViewCell::setCalculation(Calculation * calculation, bool expanded) {
uint32_t newCalculationCRC = Ion::crc32Byte((const uint8_t *)calculation, ((char *)calculation->next()) - ((char *) calculation));
if (newCalculationCRC == m_calculationCRC32) {
if (m_calculationExpanded == expanded && newCalculationCRC == m_calculationCRC32) {
return;
}
Poincare::Context * context = App::app()->localContext();
@@ -157,6 +157,7 @@ void HistoryViewCell::setCalculation(Calculation * calculation) {
// Memoization
m_calculationCRC32 = newCalculationCRC;
m_calculationExpanded = expanded;
m_calculationDisplayOutput = calculation->displayOutput(context);
m_calculationAdditionInformation = calculation->additionalInformationType(context);
m_inputView.setLayout(calculation->createInputLayout());

View File

@@ -39,7 +39,7 @@ public:
}
Poincare::Layout layout() const override;
KDColor backgroundColor() const override;
void setCalculation(Calculation * calculation);
void setCalculation(Calculation * calculation, bool expanded);
int numberOfSubviews() const override;
View * subviewAtIndex(int index) override;
void layoutSubviews(bool force = false) override;