Index: trunk/src_plugins/smartdisperse/smartdisperse.c =================================================================== --- trunk/src_plugins/smartdisperse/smartdisperse.c (revision 13302) +++ trunk/src_plugins/smartdisperse/smartdisperse.c (revision 13303) @@ -196,7 +196,7 @@ /* remember which elements we finish with */ htpi_init(&visited, ptrhash, ptrkeyeq); - /* if we're not doing all, mark the unselected elements as "visited" */ + /* if we're not doing all, mark the unselected elements and subcs as "visited" */ PCB_ELEMENT_LOOP(PCB->Data); { if (!(all || PCB_FLAG_TEST(PCB_FLAG_SELECTED, element))) { @@ -204,6 +204,12 @@ } } PCB_END_LOOP; + PCB_SUBC_LOOP(PCB->Data); + { + if (!(all || PCB_FLAG_TEST(PCB_FLAG_SELECTED, subc))) + set_visited(subc); + } + PCB_END_LOOP; /* initialize variables for place() */ minx = GAP;