With the Sequence Player always enabled by default, the `fit()` function
must be triggered at the right moment, and only once the layout has
been correctly initialized; otherwise, zoom factors may become negative
and the images will not be placed correctly in the viewer.
Changes in the orientation tag must be handled independently from the
state of the zoom factor.
The callbacks of `childrenRepeater` (which was used to "fill"
`ListAttributes` with children) were not correctly set. Their prototypes
were missing the `index` argument, meaning that instead of being
provided with the child attribute that was added or deleted,
they were provided with its index in the model.
The added children attributes were also instatiated as empty attribute
pins that were still visible, thus increasing indirectly the spacing of
the initial pin.
The curve scale of the mouse area for an edge used to be defined when
initializing the `EdgeMouseArea` for that edge. Setting it triggers a
chain of event that allow the mouse area to be active, thus correctly
detecting when it is being hovered or clicked on.
With Qt6, these events unfolded before the `EdgeMouseArea` had finished
initializing, which then caused it to not be active until the edge's
shape was modified (and the chain of events triggered again). It is now
set once the component has been created, so all the events can happen
in an environment where they are taken into account.
The fit must be automatically triggered when the size of the image
changes. In case the image size remains the same but the orientation tag
is updated, this means that the displayed size of the image has changed
(with the orientation taken into account, the width and height might end
up being inverted), so the fit should also be triggered.
With Qt6, OpenGL is not used directly anymore, and we thus must use
the RHI backend, set to version 1.0.
The SphericalHarmonics shaders, which were previously written in OpenGL,
need to be updated accordingly.
Editing the pins manually was useful when trying to hide fully the
connection whenever there was an edge connected to an attribute that
was disabled. Disabled attributes now have a special display if they are
connected, meaning both ends of the edge do not need artificial updates.