+ GList *iter = val->children;
+ VikLayer *vl;
+ VikLayer *trigger = VIK_LAYER(vik_viewport_get_trigger( VIK_VIEWPORT(data) ));
+ while ( iter ) {
+ vl = VIK_LAYER(iter->data);
+ if ( vl == trigger ) {
+ if ( vik_viewport_get_half_drawn ( VIK_VIEWPORT(data) ) ) {
+ vik_viewport_set_half_drawn ( VIK_VIEWPORT(data), FALSE );
+ vik_viewport_snapshot_load( VIK_VIEWPORT(data) );
+ } else {
+ vik_viewport_snapshot_save( VIK_VIEWPORT(data) );
+ }
+ }
+ if ( vl->type == VIK_LAYER_AGGREGATE || vl->type == VIK_LAYER_GPS || ! vik_viewport_get_half_drawn( VIK_VIEWPORT(data) ) )
+ vik_layer_draw ( vl, data );
+ iter = iter->next;
+ }