Skip to content
Merged

Wip #2358

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
6782ad5
GSI: new functions for cold proxies
May 1, 2026
0728feb
Bugfix: rbaTests:dbPCellTests were disabled, added tests for new feat…
May 1, 2026
d8016a9
Polishing doc.
May 1, 2026
1740523
Introducing a number of convenience methods for Layout
May 2, 2026
aa50562
[consider merging] Fixed a type bug in l2n reader
May 20, 2026
014f3d0
[consider merging] tab order in density map dialog
May 21, 2026
b5be4fc
Small bugfix on object snap - observe snap directions
May 23, 2026
4d77056
For more clarity change 'snap to objects (unless disabled in template…
May 23, 2026
e42bb63
Renaming 'editor options' to 'tool options'
May 23, 2026
3371333
img plugin does not need editor options pages.
May 23, 2026
98a8d37
Tweaking the snap behavior on ruler move a little.
May 23, 2026
c8362d1
Adding a ruler options widget page
May 23, 2026
cb91820
Adding the ruler options widget and disabling editor options in viewe…
May 23, 2026
4cc1d2f
Fixed a potential crash
May 24, 2026
378d2cd
Changed visibility management of tool options (aka "Editor options")
May 24, 2026
8992222
Enabling Qt-less builds
May 24, 2026
0648ee1
Merge branch 'wip'
May 24, 2026
472a7aa
Adding Gaussian hat average mode to density map
May 24, 2026
95271e3
Fixing color interpolation of false color maps
May 24, 2026
9415e40
Updating test data
May 24, 2026
249de43
Fixed some compiler warnings
May 24, 2026
37977d2
Fixing issue #2350 (strm2oas writes empty OAS)
May 24, 2026
7508c8e
Enabling context writing also for top cells - this allows the OASIS w…
May 24, 2026
a10cfce
Testdata variants needed (one for clang?)
May 25, 2026
2ea0936
Preparations for 0.30.9
May 25, 2026
be8b165
Merge remote-tracking branch 'origin/bugfix/issue-2350' into wip
May 25, 2026
4db6afb
Merge remote-tracking branch 'origin/bugfix/issue-2356' into wip
May 25, 2026
6e0d968
Python stubs regenerated, DRC/LVS doc updated
May 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 66 additions & 0 deletions Changelog
Original file line number Diff line number Diff line change
@@ -1,3 +1,69 @@
0.30.9 (2026-05-25):
* Bugfix: %GITHUB%/issues/2331 Screen size error (Assertion tlPixelBuffer.cc:260 n < m_height was not true)
* Enhancement: %GITHUB%/issues/2335 Editor Options (F3) behaviour has changed
* Enhancement: %GITHUB%/issues/2337 [Feature Request] Add to_bytes and from_bytes to shape classes
* Bugfix: %GITHUB%/issues/2339 Ruby ReportDatabase merging can lead to internal error
* Bugfix: %GITHUB%/issues/2343 copy_tree implicitly drops collinear points
* Bugfix: %GITHUB%/issues/2344 Instance properties inside a PCell are not preserved in KLayout
* Bugfix: %GITHUB%/issues/2345 Substrate sequestration
Although this ticket was more a discussion, this enhancement fixes the behavior of
empty layers in deep mode, which allows placing device terminals on them.
This eliminates the need for the workaround mentioned in the ticket.
* Bugfix: %GITHUB%/issues/2350 strm2oas klayout/testdata/gds/issue_1835.gds a.oas, a.oas is empty
With this fix, it is possible to save and load layouts that use a single library references
or PCell variants as top cell. This is not strictly a supported use model, but may be
useful in some cases. The "strm2xxx" tools now allow translating such files from OASIS
to GDS and back.
* Bugfix: %GITHUB%/issues/2356 Edit options always shown, even for klayout -ne
* Enhancement: because of issue #2356 and #2335, the "Editor Options" dock was overhauled
* It is called "Tool Options" now as it hosts not just shape editor options
* The Ruler tool got its own page as the original page was not functional and
rulers have other options. This replicates some settings from the "Ruler
and annotations setup" page.
* The dock widget's visibility can be controlled in the same way than the other
docks. The "Edit/Editor Options" entry moved to "View/Tool Options". It turns
on or off the tool options dock, which is populated with pages depending on the tool.
The default key binding (F3) will now show or hide this dock.
* Enhancement: A feature to compute a density map. It is found inside Tools/Density Map.
The density map can be computed from one or multiple layers, the region can be
specified in terms of visible region, rulers or bounding boxes of certain layers
or the whole cell. The tool will generate an image overlay over the layout
holding the density data.
* Bugfix: using "xkill" on a KLayout instance ended in a crash
* Enhancement: settings of search features are persisted (see discussion 2868)
* Enhancement: when moving rulers with "snap to objects", all points of the
rulers snap to edges or vertexes now.
* Bugfix: false color maps in images where incorrectly interpolated in some
cases.
* Bugfix: small bugfix in L2N/LVSDB reader - default values of parameters were
treated as int.
* Bugfix: properties on objects with properties (such as BoxWithProperties) where
not properly serialized. Specifically their representation did not include the
type. Hence it was not possible to retrieve properties on deserialization with
"from_s". The fix is to annotate the property values with type information.
NOTE: this is a change that is not backward-compatible.
* Bugfix: snapping rulers to edges parallel to the allowed ruler direction resulted
in skew rulers.
* Enhancement: renamed ruler option for more clarity - changed
'snap to objects (unless disabled in template)' to 'never snap to object' (inverted)
* Enhancement: enhancements in the script API
* Cell#is_cold_proxy?: indicates if a cell is a "defunc" library reference
* Cell#library_cell_name: gets the library cell name for a "defunc" reference
* Cell#library_name: gets the library name for a "defunc" reference
* Cell#pcell_name: gets the pcell name for a "defunct" reference
* Layout#delete_cells: now available with a list of cell object
* Layout#delete_cell_rec: now available with a cell object
* Layout#prune_cell: now available with a cell object
* Layout#prune_cells: for pruning multiple cells in one call
* Layout#prune_subcells: now with a cell object
* Layout#prune_subcells: now with multiple root cells
* Layout#flatten: now with a cell object
* Layout#flatten_into: now with cell objects
* Layout#delete_cell: now with a cell object
* Default value "all" for "levels" argument in "prune_subcells" and "prune_cell"
* Default value "all" for "levels" and "true" for "prune" argument in "flatten"
* Default value "all" for "levels" and "unity" for "trans" argument in "flatten_into"

0.30.8 (2026-04-14):
* Enhancement: %GITHUB%/issues/2248 Switch layouts but without losing the handle
* Bugfix: %GITHUB%/issues/2299 gf180mcu DRC performance regression.
Expand Down
7 changes: 7 additions & 0 deletions Changelog.Debian
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
klayout (0.30.9-1) unstable; urgency=low

* New features and bugfixes
- See changelog

-- Matthias Köfferlein <matthias@koefferlein.de> Mon, 25 May 2026 19:46:05 +0200

klayout (0.30.8-1) unstable; urgency=low

* New features and bugfixes
Expand Down
6 changes: 3 additions & 3 deletions src/ant/ant/RulerConfigPage4.ui
Original file line number Diff line number Diff line change
Expand Up @@ -594,12 +594,12 @@
</widget>
</item>
<item row="10" column="1">
<widget class="QCheckBox" name="t_snap_cbx">
<widget class="QCheckBox" name="t_never_snap_cbx">
<property name="toolTip">
<string>If checked, snap to edges or vertices of objects unless disabled above</string>
</property>
<property name="text">
<string>Snap to objects</string>
<string>Never snap to objects</string>
</property>
</widget>
</item>
Expand Down Expand Up @@ -893,7 +893,7 @@
<tabstop>style_cb</tabstop>
<tabstop>outline_cb</tabstop>
<tabstop>t_angle_cb</tabstop>
<tabstop>t_snap_cbx</tabstop>
<tabstop>t_never_snap_cbx</tabstop>
</tabstops>
<resources>
<include location="../../icons/icons.qrc"/>
Expand Down
242 changes: 242 additions & 0 deletions src/ant/ant/RulerOptions.ui
Original file line number Diff line number Diff line change
@@ -0,0 +1,242 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>RulerOptions</class>
<widget class="QWidget" name="RulerOptions">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>446</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Ignored" vsizetype="Ignored">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<layout class="QVBoxLayout">
<property name="spacing">
<number>6</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QScrollArea" name="scrollArea">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>446</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>2</number>
</property>
<property name="leftMargin">
<number>4</number>
</property>
<property name="topMargin">
<number>4</number>
</property>
<property name="rightMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>4</number>
</property>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Snapping</string>
</property>
<layout class="QGridLayout" name="_5">
<property name="leftMargin">
<number>4</number>
</property>
<property name="topMargin">
<number>4</number>
</property>
<property name="rightMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>4</number>
</property>
<property name="horizontalSpacing">
<number>6</number>
</property>
<property name="verticalSpacing">
<number>2</number>
</property>
<item row="0" column="0" colspan="2">
<widget class="QCheckBox" name="snap_to_grid_cbx">
<property name="text">
<string>Snap to grid</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QCheckBox" name="snap_to_objects_cbx">
<property name="text">
<string>Snap to edge/vertex</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Angle Constraints</string>
</property>
<layout class="QGridLayout" name="_2">
<property name="leftMargin">
<number>4</number>
</property>
<property name="topMargin">
<number>4</number>
</property>
<property name="rightMargin">
<number>4</number>
</property>
<property name="bottomMargin">
<number>4</number>
</property>
<property name="horizontalSpacing">
<number>6</number>
</property>
<property name="verticalSpacing">
<number>2</number>
</property>
<item row="0" column="1">
<widget class="QComboBox" name="angle_cb">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>1</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToContents</enum>
</property>
<item>
<property name="text">
<string>Any Angle</string>
</property>
</item>
<item>
<property name="text">
<string>Diagonal</string>
</property>
</item>
<item>
<property name="text">
<string>Diagonal only</string>
</property>
</item>
<item>
<property name="text">
<string>Orthogonal</string>
</property>
</item>
<item>
<property name="text">
<string>Horizontal only</string>
</property>
</item>
<item>
<property name="text">
<string>Vertical only</string>
</property>
</item>
</widget>
</item>
<item row="0" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Ruler direction</string>
</property>
</widget>
</item>
<item row="0" column="2">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Note: certain rulers may ignore these options</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<spacer name="spacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>121</width>
<height>70</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>scrollArea</tabstop>
<tabstop>snap_to_grid_cbx</tabstop>
<tabstop>snap_to_objects_cbx</tabstop>
<tabstop>angle_cb</tabstop>
</tabstops>
<resources/>
<connections/>
</ui>
3 changes: 3 additions & 0 deletions src/ant/ant/ant.pro
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ FORMS = \
RulerConfigPage3.ui \
RulerConfigPage4.ui \
RulerPropertiesPage.ui \
RulerOptions.ui \

}

Expand All @@ -22,10 +23,12 @@ FORMS = \
HEADERS = \
antConfigPage.h \
antPropertiesPage.h \
antRulerOptionsPage.h

SOURCES = \
antConfigPage.cc \
antPropertiesPage.cc \
antRulerOptionsPage.cc

# Enabled without Qt:

Expand Down
4 changes: 2 additions & 2 deletions src/ant/ant/antConfigPage.cc
Original file line number Diff line number Diff line change
Expand Up @@ -375,7 +375,7 @@ ConfigPage4::show ()
mp_ui->style_cb->setCurrentIndex ((unsigned int) m_ruler_templates [m_current_template].style ());
mp_ui->outline_cb->setCurrentIndex ((unsigned int) m_ruler_templates [m_current_template].outline ());
mp_ui->t_angle_cb->setCurrentIndex ((unsigned int) m_ruler_templates [m_current_template].angle_constraint ());
mp_ui->t_snap_cbx->setChecked (m_ruler_templates [m_current_template].snap ());
mp_ui->t_never_snap_cbx->setChecked (! m_ruler_templates [m_current_template].snap ());
mp_ui->t_mode_cb->setCurrentIndex ((unsigned int) m_ruler_templates [m_current_template].mode ());

mp_ui->main_position->setCurrentIndex ((unsigned int) m_ruler_templates [m_current_template].main_position ());
Expand Down Expand Up @@ -410,7 +410,7 @@ ConfigPage4::commit ()
ant::Template::ruler_mode_type mode = ant::Template::ruler_mode_type (mp_ui->t_mode_cb->currentIndex ());
m_ruler_templates [m_current_template].set_mode (mode);

m_ruler_templates [m_current_template].snap (mp_ui->t_snap_cbx->isChecked ());
m_ruler_templates [m_current_template].snap (! mp_ui->t_never_snap_cbx->isChecked ());

m_ruler_templates [m_current_template].set_main_position (Object::position_type (mp_ui->main_position->currentIndex ()));
m_ruler_templates [m_current_template].set_main_xalign (Object::alignment_type (mp_ui->main_xalign->currentIndex ()));
Expand Down
Loading
Loading