Index: trunk/src_plugins/draw_csect/draw_csect.c =================================================================== --- trunk/src_plugins/draw_csect/draw_csect.c (revision 8406) +++ trunk/src_plugins/draw_csect/draw_csect.c (revision 8407) @@ -298,6 +298,7 @@ static int drag_addgrp, drag_delgrp, drag_addlayer, drag_dellayer; static pcb_layergrp_id_t gactive = -1; static pcb_layer_id_t lactive = -1; +int lactive_idx = -1; typedef enum { MARK_GRP_FRAME, @@ -343,7 +344,34 @@ } } +static void mark_layer_order(pcb_coord_t x) +{ + pcb_layer_group_t *g; + pcb_coord_t tx, ty1, ty2; + lactive_idx = -1; + if ((gactive < 0) || (PCB->LayerGroups.grp[gactive].len < 1)) + return; + + g = &PCB->LayerGroups.grp[gactive]; + + tx = layer_crd[g->lid[0]].X1; + ty1 = layer_crd[g->lid[0]].Y1; + ty2 = layer_crd[g->lid[0]].Y2; + + for(lactive_idx = g->len-1; lactive_idx >= 0; lactive_idx--) { + pcb_layer_id_t lid = g->lid[lactive_idx]; +/* pcb_printf("chk: %mm %mm\n", layer_crd[lid].X1, layer_crd[lid].X2);*/ + if (x > (layer_crd[lid].X1 + layer_crd[lid].X2)/2) { + tx = layer_crd[lactive_idx].X2; +/* pcb_printf(" hit1 %mm\n", tx);*/ + break; + } + } +/* pcb_printf(" hit2 %mm\n", tx);*/ + dline_(tx, ty1-PCB_MM_TO_COORD(1), tx, ty2+PCB_MM_TO_COORD(1), 0.25); +} + static void draw_hover_label(const char *str) { int x0 = PCB_MM_TO_COORD(2.5); /* compensate for the mouse cursor (sort of random) */ @@ -494,6 +522,7 @@ pcb_layer_t *l = &PCB->Data->Layer[drag_lid]; draw_hover_label(l->Name); mark_grp(cy, PCB_LYT_COPPER | PCB_LYT_MASK, MARK_GRP_FRAME); + mark_layer_order(cx); } else if (drag_gid >= 0) { pcb_layer_group_t *g = &PCB->LayerGroups.grp[drag_gid];