mirror of https://github.com/KLayout/klayout.git
Merge remote-tracking branch 'origin/master' into master-mac-qt6
This commit is contained in:
commit
9cd0017d0d
|
|
@ -1530,8 +1530,10 @@ Service::mouse_click_event (const db::DPoint &p, unsigned int buttons, bool prio
|
|||
db::DPoint pt = snap1 (p, m_obj_snap && tpl.snap ()).second;
|
||||
|
||||
// begin the transaction
|
||||
tl_assert (! manager ()->transacting ());
|
||||
manager ()->transaction (tl::to_string (tr ("Create ruler")));
|
||||
if (manager ()) {
|
||||
tl_assert (! manager ()->transacting ());
|
||||
manager ()->transaction (tl::to_string (tr ("Create ruler")));
|
||||
}
|
||||
|
||||
m_current = ant::Object (pt, pt, 0, tpl);
|
||||
show_message ();
|
||||
|
|
@ -1539,7 +1541,9 @@ Service::mouse_click_event (const db::DPoint &p, unsigned int buttons, bool prio
|
|||
insert_ruler (m_current, true);
|
||||
|
||||
// end the transaction
|
||||
manager ()->commit ();
|
||||
if (manager ()) {
|
||||
manager ()->commit ();
|
||||
}
|
||||
|
||||
} else if (tpl.mode () == ant::Template::RulerAutoMetric) {
|
||||
|
||||
|
|
@ -1567,8 +1571,10 @@ Service::mouse_click_event (const db::DPoint &p, unsigned int buttons, bool prio
|
|||
if (ee.any) {
|
||||
|
||||
// begin the transaction
|
||||
tl_assert (! manager ()->transacting ());
|
||||
manager ()->transaction (tl::to_string (tr ("Create ruler")));
|
||||
if (manager ()) {
|
||||
tl_assert (! manager ()->transacting ());
|
||||
manager ()->transaction (tl::to_string (tr ("Create ruler")));
|
||||
}
|
||||
|
||||
m_current = ant::Object (ee.first, ee.second, 0, tpl);
|
||||
show_message ();
|
||||
|
|
@ -1576,7 +1582,9 @@ Service::mouse_click_event (const db::DPoint &p, unsigned int buttons, bool prio
|
|||
insert_ruler (m_current, true);
|
||||
|
||||
// end the transaction
|
||||
manager ()->commit ();
|
||||
if (manager ()) {
|
||||
manager ()->commit ();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -1603,8 +1611,10 @@ Service::mouse_click_event (const db::DPoint &p, unsigned int buttons, bool prio
|
|||
// create the ruler object
|
||||
|
||||
// begin the transaction
|
||||
tl_assert (! manager ()->transacting ());
|
||||
manager ()->transaction (tl::to_string (tr ("Create ruler")));
|
||||
if (manager ()) {
|
||||
tl_assert (! manager ()->transacting ());
|
||||
manager ()->transaction (tl::to_string (tr ("Create ruler")));
|
||||
}
|
||||
|
||||
show_message ();
|
||||
|
||||
|
|
@ -1615,7 +1625,9 @@ Service::mouse_click_event (const db::DPoint &p, unsigned int buttons, bool prio
|
|||
clear_transient_selection ();
|
||||
|
||||
// end the transaction
|
||||
manager ()->commit ();
|
||||
if (manager ()) {
|
||||
manager ()->commit ();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -2256,9 +2268,13 @@ Service::menu_activated (const std::string &symbol)
|
|||
if (symbol == "ant::clear_all_rulers_internal") {
|
||||
clear_rulers ();
|
||||
} else if (symbol == "ant::clear_all_rulers") {
|
||||
manager ()->transaction (tl::to_string (tr ("Clear all rulers")));
|
||||
if (manager ()) {
|
||||
manager ()->transaction (tl::to_string (tr ("Clear all rulers")));
|
||||
}
|
||||
clear_rulers ();
|
||||
manager ()->commit ();
|
||||
if (manager ()) {
|
||||
manager ()->commit ();
|
||||
}
|
||||
} else {
|
||||
lay::Plugin::menu_activated (symbol);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ void FlatEdges::invalidate_cache ()
|
|||
|
||||
void FlatEdges::init ()
|
||||
{
|
||||
m_is_merged = true;
|
||||
m_is_merged = false;
|
||||
m_merged_edges_valid = false;
|
||||
}
|
||||
|
||||
|
|
@ -321,9 +321,7 @@ const db::RecursiveShapeIterator *FlatEdges::iter () const
|
|||
void
|
||||
FlatEdges::do_insert (const db::Edge &edge)
|
||||
{
|
||||
if (! empty ()) {
|
||||
m_is_merged = false;
|
||||
}
|
||||
m_is_merged = empty ();
|
||||
|
||||
mp_edges->insert (edge);
|
||||
invalidate_cache ();
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ void FlatRegion::invalidate_cache ()
|
|||
|
||||
void FlatRegion::init ()
|
||||
{
|
||||
m_is_merged = true;
|
||||
m_is_merged = false;
|
||||
m_merged_polygons_valid = false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -270,7 +270,7 @@ OriginalLayerEdges::less (const Edges &other) const
|
|||
void
|
||||
OriginalLayerEdges::init ()
|
||||
{
|
||||
m_is_merged = true;
|
||||
m_is_merged = false;
|
||||
m_merged_edges_valid = false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -382,7 +382,7 @@ OriginalLayerRegion::less (const Region &other) const
|
|||
void
|
||||
OriginalLayerRegion::init ()
|
||||
{
|
||||
m_is_merged = true;
|
||||
m_is_merged = false;
|
||||
m_merged_polygons_valid = false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -260,7 +260,7 @@ static const db::Net *net_for_terminal_by_name_const (const db::Device *device,
|
|||
}
|
||||
}
|
||||
|
||||
static const db::Net *net_for_terminal_by_name (db::Device *device, const std::string &name)
|
||||
static db::Net *net_for_terminal_by_name (db::Device *device, const std::string &name)
|
||||
{
|
||||
if (! device->device_class () || ! device->device_class ()->has_terminal_with_name (name)) {
|
||||
return 0;
|
||||
|
|
@ -2832,7 +2832,7 @@ Class<db::NetlistSpiceReader> db_NetlistSpiceReader (db_NetlistReader, "db", "Ne
|
|||
"Use the SPICE reader like this:\n"
|
||||
"\n"
|
||||
"@code\n"
|
||||
"writer = RBA::NetlistSpiceReader::new\n"
|
||||
"reader = RBA::NetlistSpiceReader::new\n"
|
||||
"netlist = RBA::Netlist::new\n"
|
||||
"netlist.read(path, reader)\n"
|
||||
"@/code\n"
|
||||
|
|
|
|||
|
|
@ -1318,3 +1318,13 @@ TEST(54_issue1011)
|
|||
run_test (_this, "54", false);
|
||||
}
|
||||
|
||||
TEST(55_drccount)
|
||||
{
|
||||
run_test (_this, "55", false);
|
||||
}
|
||||
|
||||
TEST(55d_drccount)
|
||||
{
|
||||
run_test (_this, "55", true);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -98,13 +98,16 @@ connect_global(ptie, "SUBSTRATE")
|
|||
# -------------------------------------------------------------------
|
||||
# Netlist and compare
|
||||
|
||||
# Netlist normalization
|
||||
netlist.simplify
|
||||
# Netlist extraction
|
||||
netlist
|
||||
|
||||
# Hierarchy alignment (flatten out unmatched cells)
|
||||
# Hierarchy alignment (flatten out unmatched cells, specifically device cells)
|
||||
align
|
||||
|
||||
# Netlist vs. netlist
|
||||
# Netlist normalization and device combination
|
||||
netlist.simplify
|
||||
|
||||
# Netlist vs. netlist check
|
||||
compare
|
||||
</text>
|
||||
</klayout-macro>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
|
||||
source $drc_test_source
|
||||
target $drc_test_target
|
||||
|
||||
if $drc_test_deep
|
||||
deep
|
||||
end
|
||||
|
||||
licon = input(66, 44)
|
||||
|
||||
licon.output(66, 44)
|
||||
|
||||
licon_cluster = licon.sized(0.2).sized(-0.2)
|
||||
|
||||
single = licon_cluster.drc(secondary(licon).count == 1)
|
||||
single.sized(0.1).output(100, 0)
|
||||
|
||||
single = licon_cluster.drc(if_any(secondary(licon).count == 1))
|
||||
single.sized(0.1).output(101, 0)
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue