Index: trunk/src/libcschem/cnc_obj.h =================================================================== --- trunk/src/libcschem/cnc_obj.h (revision 1884) +++ trunk/src/libcschem/cnc_obj.h (revision 1885) @@ -44,6 +44,13 @@ if (value > obj->hdr.bbox.coord ## 2) { obj->hdr.bbox.coord ## 2 = value; obj->hdr.sheet->bbox.x1 = CSCH_COORD_INV; } \ } while(0) +#define csch_cobj_redraw(obj) \ +do { \ + csch_chdr_t *__obj__ = obj; \ + rnd_event(&__obj__->sheet->hidlib, CSCH_EVENT_OBJ_NEEDS_REDRAW, "p", __obj__); \ +} while(0) + + /* implement heuristics to figure on which display layer an object is supposed to go */ csch_displayer_t csch_cobj_dsply(csch_chdr_t *obj); Index: trunk/src/libcschem/event.c =================================================================== --- trunk/src/libcschem/event.c (revision 1884) +++ trunk/src/libcschem/event.c (revision 1885) @@ -32,7 +32,8 @@ "cschev_layers_changed", "cschev_layervis_changed", "cschev_undo_post", - "cschev_sheet_edit" + "cschev_sheet_edit", + "cschev_obj_needs_redraw" }; void csch_event_init_app(void) Index: trunk/src/libcschem/event.h =================================================================== --- trunk/src/libcschem/event.h (revision 1884) +++ trunk/src/libcschem/event.h (revision 1885) @@ -34,6 +34,7 @@ CSCH_EVENT_LAYERVIS_CHANGED, /* called after the visibility of layers has changed */ CSCH_EVENT_UNDO_POST, /* called after undo */ CSCH_EVENT_SHEET_EDITED, /* called after any sheet edit */ + CSCH_EVENT_OBJ_NEEDS_REDRAW, /* called when an object needs redraw (object properties or geometry changed); arg: (csch_chdr_t *) */ CSCH_EVENT_last /* not a real event */ };