void update (const int newRow, const bool isNowSelected) { jassert (newRow >= 0); if (newRow != row || isNowSelected != isSelected) { row = newRow; isSelected = isNowSelected; repaint(); } TableListBoxModel* const model = owner.getModel(); if (model != nullptr && row < owner.getNumRows()) { const Identifier columnProperty ("_tableColumnId"); const int numColumns = owner.getHeader().getNumColumns (true); for (int i = 0; i < numColumns; ++i) { const int columnId = owner.getHeader().getColumnIdOfIndex (i, true); Component* comp = columnComponents[i]; if (comp != nullptr && columnId != (int) comp->getProperties() [columnProperty]) { columnComponents.set (i, nullptr); comp = nullptr; } comp = model->refreshComponentForCell (row, columnId, isSelected, comp); columnComponents.set (i, comp, false); if (comp != nullptr) { comp->getProperties().set (columnProperty, columnId); addAndMakeVisible (comp); resizeCustomComp (i); } } columnComponents.removeRange (numColumns, columnComponents.size()); } else { columnComponents.clear(); } }
void resized() override { for (int i = columnComponents.size(); --i >= 0;) resizeCustomComp (i); }