- Ascend now ascends further up if a child cell is
selected as top level cell
- Descend now looks into transiently selected shapes
or instances too (mouse hover mode)
- New feature "Descend into" which combines "Descend"
with "make new top".
- Fixed a compiler warning in layLayoutViewBase.cc
Problem was: with a partial selection, clicking
in the vicinity of a non-selected edge could
make this edge the selected one. So it was
not possible to drag the selection in some
cases.
With "move mode" it was. The difference was in
the detection logic that decides where a click
is on the selection or outside.
Now, the logic is aligned, and partial mode
clicks will check whether the mouse pointer
is inside the selection bbox (plus some
margin). In that case, the click applies to
the current selection.
Problem was: after activating Text mode the edit
function showed the dock with the editor options.
This cause a mouse move event due to resizing
which in turn triggered the popup about invisible
layer. Apparently Qt's dock open animation does
not like popups during the animation phase which
caused the segfault.
Solution is to do the check upon activation,
not in the mouse move event.
1.) transient selection does not need to be handled
2.) restored original behavior or set_selection/get_selection
(should not modify the selection)
3.) only geometry changes will trigger a selection cleanup
Plus: better implementation of fix for issue #1145
(Crash when clearing a Shapes container by script while a shape is selected)
The previous solution was based on deferred execution and between
execution of that cleanup and the use of the selection, invalid states
could be present.
* Klayout PyCell integration
-added tl::optional as derivate of std::optional for c++17 and above, reduced
implementation otherwise
-fixed missing include for c++17 and above
-added range constraints for PCell parameter
Signed-off-by: ThomasZecha <zecha@ihp-microelectronics.com>
* tl::optional now based on internal implementation, added tests and tl::to_string binding
* Refactoring the range into min_value and max_value attributes without action and resolution.
* Integration of feature into PCell framework
* Cleanup and fixed some compile issues
* Cleanup, added tests
* [consider merging] Added pymod distutil_src files to dependencies.
* Updated Python stubs
* User feedback: upon entering an invalid value string into an edit box, do not reset the field
---------
Signed-off-by: ThomasZecha <zecha@ihp-microelectronics.com>
Co-authored-by: ThomasZecha <zecha@ihp-microelectronics.com>
Co-authored-by: Matthias Koefferlein <matthias@klayout.de>
Also fixed a problem with icons that did not get hidden when visibility was changed.
This fix needed some rework of the layout scheme of PCell parameter pages.
Co-authored-by: Matthias Koefferlein <matthias@klayout.de>
Currently, in the Array Instance sub-UI that appears when inserting a new
array instance, trying to use the "tab" key to move through the entry
widgets results in going through them in a strange order (column step x,
column step y, row step y, row step x, dimension columns, dimension
rows). This patch declares the correct tabbing order for the widgets.
PCells have been featuring point-like handles but
they suffered some issues because they have been
mapped to degenerated boxes:
- hardly visible
- could be destroyed using partial editing
Now, the database offers points, hence it is
possible to store points explicitly, so no
tricks need to be played to make them visible.
Editing has been implemented to some extent,
so it is possible for example to configure
handles in the properties dialogs.
- do not remove last point of closed paths
- fixed removal of redundant points in polygon/path edit
- on-grid point insertion in paths and polygons for skew angle edges
The "show parameter names" setting is now persisted.
Side effect: changing this setting will now trigger
a configuration update which has some side effects - e.g.
when "lazy update" is configured (parameters are reset).
But that appears to be acceptable.
In addition a second flaw was fixed: errors were not
properly reported by showing the error indicator.
The indicator was hidden immediately after showing it.
* [CONSIDER MERGING] Clarification and typo fixed in DRC doc.
* Enhanced Shapes::is_valid so it's more reliable in detecting invalid shape objects.
* ObjectInstPath now has a validity attribute
* First implementation of solution for edtService (partial service to follow)
* Validating selection also for Partial Edit mode
* Help browser problem mitigation: on Qt6 (?), QTextBrowser appears to be reloading images relative to the new URL on a URL change. This caused 'missing resource' exceptions. As long as the root cause of this problem is not know, the exceptions are turned into log errors now.
* Fixed issue 1106
* Opportunity fix: library selection box listed libraries with technology even though no technology is selected.
* Opportunity: show PCell errors on new error layer. Previously, errors were only shown when the PCell had at least a single layer parameter
The error text is drawn together with guiding shapes. Disabling guiding shapes will
turn off error display.
* Opportunity: fixed an issue when reloading a library immediately after loading a layout: in this case, the library connection got lost and cells were substituted by static ones
* Opportunity: added a layout cleanup for the following case: a layout is loaded without the library present - giving defunct cells. Then the library is registered and defunct cells are reconnected.
* PyPI deployment: corrected branch filter
* skip redundant points in partial edit, but not colinear ones
* Polygon transformation now preserves raw points
* WIP: first attempt to fix issue-983
* WIP: bugfixes
* Fixed a problem with displaying empty cell dimensions, one warning
* Another fix: don't allow proxy cells to be selected in the instance properties dialog. This creates a confusing behaviour
* Fixed a few flaws in the cell selection scheme on the instance properties dialog.
* Early warning when trying to build a recursive hierarchy.
* Another fix: avoid too much undo in case of errors thrown during 'apply' followed by 'cancel'
* Fixed issue-983 solution
* Fixed the modification status of PCell parameters for 'apply to all'
The problem was essentially the "specific path" which got invalid.
The solution is to establish a better criterion for "path validity"
and use for failsafes against invalid paths.
In addition, the path validation has been modified such that a
better choice is made about the remaining path after a cell gets
deleted.