* In a previous update in 2021 many copyright ranges were truncated
accidentally, and some files have been copy-pasted with wrong years. These
dates have been fixed based on git history and original copyright messages.
* The basic idea here is to have a reasonable middleground between
ResizeToContents and Stretch. We want to show at *least* enough for
the contents, but the remaining space should be shared between the
columns according to some proportions.
* That way you don't end up with one huge column and several tiny ones
that are just big enough but no more, but all data is still visible.
* This is used primarily for the buffer/mesh viewer to be able to pin
the index/element column to the left side, group columns together with
a noticeable separator, and other minor tweaks.
* Unfortunately due to tight private coupling and lack of virtual
functions in the QTableView and QHeaderView, a few unrelated functions
have to be re-implemented to point to our own header.
* Annoyingly although Qt has an internal bool allowUserMoveOfSection0
which does exactly what we want allowing the tree column to be
movable, we can't enable it because it's private. So instead we have
to re-implement section moving ourselves.
* Minor tweak - also made RDTreeWidgets non-movable by default since
usually we don't want to allow it.