remove propagate_hilights() from prepare_netlist_structs() (call explicitly when needed). Fix hilight_parent_pins()/propagate_hilights() in go_back() (some UNhilighted pins did not propagate to parent)

This commit is contained in:
Stefan Frederik 2021-12-05 01:34:19 +01:00
parent 9afce9efee
commit 05f176045b
5 changed files with 20 additions and 7 deletions

View File

@ -1171,7 +1171,7 @@ void go_back(int confirm) /* 20171006 add confirm */
if(xctx->hilight_nets) {
if(prev_sch_type != CAD_SYMBOL_ATTRS) hilight_parent_pins();
propagate_hilights(1, 0, XINSERT_NOREPLACE);
propagate_hilights(1, 1, XINSERT_NOREPLACE);
}
xctx->xorigin=xctx->zoom_array[xctx->currsch].x;
xctx->yorigin=xctx->zoom_array[xctx->currsch].y;
@ -1679,6 +1679,9 @@ void new_wire(int what, double mx_snap, double my_snap)
find_inst_to_be_redrawn(16); /* delete hash and arrays */
bbox(SET , 0.0 , 0.0 , 0.0 , 0.0);
}
if(xctx->hilight_nets) {
propagate_hilights(1, 1, XINSERT_NOREPLACE);
}
draw();
if(!big) bbox(END , 0.0 , 0.0 , 0.0 , 0.0);
} else update_conn_cues(1,1);

View File

@ -439,7 +439,7 @@ void hilight_net_pin_mismatches(void)
my_free(714, &labname);
my_free(715, &lab);
my_free(716, &netname);
propagate_hilights(1, 0, XINSERT_NOREPLACE);
if(xctx->hilight_nets) propagate_hilights(1, 0, XINSERT_NOREPLACE);
redraw_hilights(0);
}
@ -676,7 +676,7 @@ int search(const char *tok, const char *val, int sub, int sel)
}
}
}
if(!sel) propagate_hilights(1, 0, XINSERT_NOREPLACE);
if(!sel && xctx->hilight_nets) propagate_hilights(1, 0, XINSERT_NOREPLACE);
if(sel) for(c = 0; c < cadlayers; c++) for(i=0;i<xctx->lines[c];i++) {
str = get_tok_value(xctx->line[c][i].prop_ptr, tok,0);
if(xctx->get_tok_size) {
@ -1049,6 +1049,7 @@ void propagate_hilights(int set, int clear, int mode)
char *type;
int en_hi;
dbg(1, "propagate_hilights()\n");
en_hi = tclgetboolvar("en_hilight_conn_inst");
prepare_netlist_structs(0);
for(i = 0; i < xctx->instances; i++) {
@ -1576,7 +1577,7 @@ void hilight_net(int viewer)
}
}
if(!incr_hi) incr_hilight_color();
propagate_hilights(1, 0, XINSERT_NOREPLACE);
if(xctx->hilight_nets) propagate_hilights(1, 0, XINSERT_NOREPLACE);
tcleval("if { [info exists gaw_fd] } {close $gaw_fd; unset gaw_fd}\n");
}
@ -1613,7 +1614,7 @@ void unhilight_net(void)
bbox(ADD, boundbox.x1, boundbox.y1, boundbox.x2, boundbox.y2);
bbox(SET , 0.0 , 0.0 , 0.0 , 0.0);
}
propagate_hilights(0, 1, XINSERT_NOREPLACE);
propagate_hilights(0, 1, XINSERT_NOREPLACE); /* will also clear xctx->hilight_nets if nothing left hilighted */
draw();
if(!big) bbox(END , 0.0 , 0.0 , 0.0 , 0.0);

View File

@ -1003,6 +1003,9 @@ void copy_objects(int what)
check_collapsing_objects();
if(tclgetboolvar("autotrim_wires")) trim_wires();
/* update_conn_cues(1, 1); */
if(xctx->hilight_nets) {
propagate_hilights(1, 1, XINSERT_NOREPLACE);
}
xctx->ui_state &= ~STARTCOPY;
xctx->x1=xctx->y_1=xctx->x2=xctx->y_2=xctx->move_rot=xctx->move_flip=xctx->deltax=xctx->deltay=0;
bbox(SET , 0.0 , 0.0 , 0.0 , 0.0);

View File

@ -1041,8 +1041,8 @@ void prepare_netlist_structs(int for_netlist)
my_free(840, &class);
my_free(841, &global_node);
dbg(2, "prepare_netlist_structs(): returning\n");
propagate_hilights(1, 0, XINSERT_NOREPLACE);
/* avoid below call: it in turn calls prepare_netlist_structs(), too many side effects */
/* propagate_hilights(1, 0, XINSERT_NOREPLACE);*/
}
int sym_vs_sch_pins()

View File

@ -1137,6 +1137,9 @@ void load_schematic(int load_symbols, const char *filename, int reset_undo) /* 2
}
if(tclgetboolvar("autotrim_wires")) trim_wires();
update_conn_cues(0, 0);
if(xctx->hilight_nets) {
propagate_hilights(1, 1, XINSERT_NOREPLACE);
}
}
void clear_undo(void)
@ -1352,6 +1355,9 @@ void pop_undo(int redo, int set_modify_status)
xctx->prep_hi_structs=0;
link_symbols_to_instances(-1);
update_conn_cues(0, 0);
if(xctx->hilight_nets) {
propagate_hilights(1, 1, XINSERT_NOREPLACE);
}
dbg(2, "pop_undo(): returning\n");
}