Ensure canvas displayed inside GUI windows are updated in the same
frame as the according window is made visible. This prevents
showing previous contents for the first frame.
- Don't capture mouse events if mouse mode has
pass-through disabled. This behaviour is
consistent with the PUI dialogs and allows
changing moving view and controls while above
any GUI dialog.
- Add option to canvas windows to ignore all
events and let them pass through
("capture-events").
- Setting 'resize' property to true on canvas::Window shows
resize icons and exposes requested size to the property
tree. This can be used eg. from Nasal to actually resize
the window and/or show a preview of the resized window
while resizing.
- Event handling now ignores events which have already
been handled. Before eg. clicking inside a window
also caused picking to be performed inside the
scene which is for sure not the expected behaviour.
- Also forwards scroll wheel events from canvas::Window.
If the size of a Canvas changes also the texture id
changes. We now retrieve the texture id for the CanvasWidget
every frame to ensure it uses the latest texture instance.
- Redraw all canvases in the frame OpenVG is initialized.
Otherwise if multiple canvases are created in the same frame
only one of them would get correctly updated.
If OpenVG/ShivaVG is initialized nothing is drawn in the same
frame, therefore we need to draw another frame to ensure all
paths are rendered correctly.
- Only render the canvas if something has actually changed
(Currently checked by looking for modified properties).
- Only write bounding box to property tree if it has been
recalculated (until now this happened every frame).
Currently if a SGPropertyNode is removed from the property tree
only for this single node a childRemoved event is triggered. So
if we just check for a specific child to be removed, we will never
be notified. This commit manually triggers the event recursively
for all children but this should probably go directly into simgear.
- Groups store property nodes for different styles and pass them
to child elements on creation (No dynamic updates yet)
- Use StyleSetter map instead of loads of if/else if statements
for setting element styles.
- Unify element style properties (Only use one property, instead
of multiple like it has been with colors)
- Fix: Create only one element per property node (Was two)
- Use bounding box intersections to determine which element is
hit.
- Transform mouse coordinates to local coordinates.
- Try to get osgText bounding box correct (or at least better)
- Refactor and unify common functionality of canvas::Window and
canvas::Image
- Make canvas::Image actually work
- Allow using canvases inside canvas::Image
* Use new canvas:// "protocol" to allow using canvases in
place of images
- Prepare for categorizing canvases:
* Move canvases to /canvas/by-index
* Later support linking to other nodes in subbranches of
/canvas