Don't resort this every time the objects are drawn.

I'd guess that most of the time things are all on the same layer, so maybe just invalidate the list when a non-standard layer is used. If that's not the case, invalidate whenever new text objects are added?