Apparently that’s the test which fails in juce_ListBox.cpp :
[code] if (selected [selected.size() - 1] >= totalItems)
selected.removeRange (Range (totalItems, std::numeric_limits::max()));
lastRowSelected = getSelectedRow (0);
selectionChanged = true;
if (selectionChanged && model != 0)
In case the models both have the same number of lines, it doesn’t enter the if, and selectionChanged stays false, and therefore “selectedRowsChange” is never called.