* 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.
Before, if a row was selected, the color was completely replaced, which
makes the color preview column completely useless for that row.
This change also fixes some inconsistencies with how the selection hover
works on tree widgets; previously part of the row was not highlighted.
* If the overall preview widget doesn't resize but the thumbnail does because
the preview text label has changed in size, we should emit a resize event so
the thumbnail can be redrawn.
* Unifying these views means that constant buffers have all the same
reformatting and it avoids having multiple paths for what is now effectively
the same control (a buffer can either have fixed data, repeating data, or
both)
* GL and Vulkan allow buffers to have fixed variables before a trailing AoS
unbounded array. These fixed variables can't be easily displayed in a table
and previously we skipped them. Now we display these in a tree format.
* We also support formats which don't have an unbounded array at all and display
these just with the tree. This will allow the BufferViewer to subsume the
capabilities of the ConstantBufferPreviewer (though it needs to handle opaque
non-buffer-backed variables, and slot-following).
* The filter icon was confusing since it had a 'refresh' badge instead of
'save/load/recent' type badge, and making the latter readable in a few pixels
is not feasible. Having the combo dropdown with saved filters is as intuitive
and works in-line.
* We're somewhat trying to match Qt's behaviour here, as we want to ensure that
the items are always sized as if they have space for an icon when
ignoreIconSize() is true. In this case there's a +2 added "to avoid icons
overlapping" but only after the decorationsize is max'd with the font size. In
cases where the font is bigger than the icon, this is important.
* If there would be no tooltip otherwise, it just shows the thumbnail. Otherwise
any tooltip text (like view parameters or image layout) is displayed below the
thumbnail
* This prevents SH_ItemView_ArrowKeysNavigateIntoChildren from causing left-move
from an expanded node to jump immediately to its parent instead of collapsing
it when the scrollbar is not leftmost