split ToC state more cleanly between TabInfo and WindowInfo