1. The readers will overwrite the layer names if given in secondary fashion
(additionally to layer/datatype)
2. The layer properties nodes will update the "real source" according to
the actual name if the name is used in addition to layer/datatypes
LayoutCanvas::image_with_options always rendered the layout with a
single thread (workers = 0), which serialized image generation even on
views configured for parallel drawing. Now it honors the view's
drawing_workers() count when the view is not in synchronous mode, and
waits for the asynchronous workers to finish before reading back the
rendered bitmaps. This speeds up image export on large layouts while
preserving the original single-threaded behavior in synchronous mode.
This bug was triggered during development and happened
because the tool bar build code was invalidating
QAction objects indirectly while they are used for
building the main menu.
Solution is to separate building of menu bar and
tool bar / context menus.
Problem: snapping with angle constraints and object snapping
sometimes gave results not conforming to the angle constaints.
This happened when shape edges are parallel to the cutlines that
define the angle constraint.
The fit box is computed now the following way
1. Compute the bounding box of "visible" parts
(i.e. treating empty cells as empty)
2. If that bounding box is empty, compute the
bounding box using the previous scheme,
where empty cells are treated as point-like
with a single point at their origin
The name of the config option is "auto-create-new-layers".
It is a per-view option and can be edited on the
"Application/Layer Properties" page.
With this option set to true (default), new layers
are automatically added to the layer list on
1. Paste of cells and shapes
2. Placing of instances
Manually adding new layers to the layer list is always possible.
The solution is to introduce a new object, the layout handle.
A layout handle is a reference counting pointer to a layout.
It can be obtained from a cell view and stored somewhere.
If the cell view is closed, the layout will still exists
as long as a layout handle exists. A layout handle can be
used in LayoutView#show_layout in addition to the Layout
object to re-open a layout that existed in a closed view.
- Bring text and path options to front when changing mode
- Path width and text string can be configure in toolkit widget
- Enter key finishes move and partial move