- if ( ! IS_VIK_AGGREGATE_LAYER(vik_treeview_item_get_pointer ( vlp->vt, &iter )) ) {
- addtoagg = VIK_AGGREGATE_LAYER(vik_treeview_item_get_parent ( vlp->vt, &iter ));
- replace_iter = &iter;
+ if ( IS_VIK_AGGREGATE_LAYER(vik_treeview_item_get_pointer ( vlp->vt, &iter )) )
+ addtoagg = VIK_AGGREGATE_LAYER(vik_treeview_item_get_pointer ( vlp->vt, &iter ));
+ else {
+ VikLayer *vl = VIK_LAYER(vik_treeview_item_get_parent ( vlp->vt, &iter ));
+ while ( ! IS_VIK_AGGREGATE_LAYER(vl) ) {
+ iter = vl->iter;
+ vl = VIK_LAYER(vik_treeview_item_get_parent ( vlp->vt, &vl->iter ));
+ g_assert ( vl->realized );
+ }
+ addtoagg = VIK_AGGREGATE_LAYER(vl);
+ replace_iter = &iter;