Lazarus trunk affected, reproduces on macOS.
Previously:
When you select a new TListItem, TListView.OnChange fired with the deselected item first, and then with the selected item.
Currently:
TListView.OnChange fires with the newly selected item first, and then the deselected item.
This breaks a lot of code which assumes, based on historic behavior, that the old item is deselected first, and then the new item is selected (instead of doing it chronologically inaccurately).