It's strange that selection undo triggers the actual boundbox
calculation.
But that aside, the problem is that there are two functions that
recalculate the boundbox of an object.
- One that considers the evaluated mesh and the displist
- Another that only considers the object's data.
Most of the time, the bound box is calculated on the final object
(with modifiers), so it doesn't seem right to just rely on ob->data
to recalculate the ob->runtime.bb.
So join the functions that calculate boundbox into one and use the
functions that only only consider ob->data as a fallback.