Index: trunk/src/find_drc.c =================================================================== --- trunk/src/find_drc.c (revision 21224) +++ trunk/src/find_drc.c (revision 21225) @@ -56,9 +56,11 @@ violation->type = pcb_strdup(type); violation->title = pcb_strdup(title); violation->explanation = pcb_strdup(explanation); - violation->have_measured = have_measured; - violation->measured_value = measured_value; - violation->required_value = required_value; + + violation->data_type = PCB_VIEW_DRC; + violation->data.drc.have_measured = have_measured; + violation->data.drc.measured_value = measured_value; + violation->data.drc.required_value = required_value; memcpy(&violation->objs, objs, sizeof(violation->objs)); memset(objs, 0, sizeof(violation->objs)); return violation; Index: trunk/src/view.h =================================================================== --- trunk/src/view.h (revision 21224) +++ trunk/src/view.h (revision 21225) @@ -39,6 +39,12 @@ data (e.g. drc size values) */ typedef struct pcb_view_s pcb_view_t; + +typedef enum pcb_view_type_e { + PCB_VIEW_PLAIN, /* has no data */ + PCB_VIEW_DRC +} pcb_view_type_t; + struct pcb_view_s { unsigned long int uid; /* ID unique for each view (for GUI identification) - 0 means invalid */ @@ -55,9 +61,14 @@ pcb_coord_t x, y; /* optional: a coord to mark on the preview */ pcb_idpath_list_t objs[2]; /* optional: two groups of objects to highlight on preview */ - unsigned have_measured:1; - pcb_coord_t measured_value; - pcb_coord_t required_value; + pcb_view_type_t data_type; + union { + struct { + unsigned have_measured:1; + pcb_coord_t measured_value; + pcb_coord_t required_value; + } drc; + } data; gdl_elem_t link; /* always part of a list */ }; Index: trunk/src_plugins/dialogs/dlg_view.c =================================================================== --- trunk/src_plugins/dialogs/dlg_view.c (revision 21224) +++ trunk/src_plugins/dialogs/dlg_view.c (revision 21225) @@ -146,10 +146,14 @@ if (v != NULL) { pcb_view_goto(v); PCB_DAD_SET_VALUE(ctx->dlg_hid_ctx, ctx->wexplanation, str_value, re_wrap(pcb_strdup(v->explanation), 32)); - if (v->have_measured) - PCB_DAD_SET_VALUE(ctx->dlg_hid_ctx, ctx->wmeasure, str_value, pcb_strdup_printf("%m+required: %$ms\nmeasured: %$ms\n", conf_core.editor.grid_unit->allow, v->required_value, v->measured_value)); - else - PCB_DAD_SET_VALUE(ctx->dlg_hid_ctx, ctx->wmeasure, str_value, pcb_strdup_printf("%m+required: %$ms\n", conf_core.editor.grid_unit->allow, v->required_value)); + switch(v->data_type) { + case PCB_VIEW_DRC: + if (v->data.drc.have_measured) + PCB_DAD_SET_VALUE(ctx->dlg_hid_ctx, ctx->wmeasure, str_value, pcb_strdup_printf("DRC: %m+required: %$ms\nmeasured: %$ms\n", conf_core.editor.grid_unit->allow, v->data.drc.required_value, v->data.drc.measured_value)); + else + PCB_DAD_SET_VALUE(ctx->dlg_hid_ctx, ctx->wmeasure, str_value, pcb_strdup_printf("DRC: %m+required: %$ms\n", conf_core.editor.grid_unit->allow, v->data.drc.required_value)); + break; + } } }