diff options
author | mvglasow <michael -at- vonglasow.com> | 2019-07-29 23:23:27 +0200 |
---|---|---|
committer | mvglasow <michael -at- vonglasow.com> | 2019-07-29 23:23:27 +0200 |
commit | ee59ece258227524475669eccc4e9f7d08a15b50 (patch) | |
tree | 2bca8acae032a18006437bd568d3274988e1ce10 /navit/traffic.c | |
parent | e2d9a74599f672b31ba695309f42f8e01167ade2 (diff) | |
download | navit-ee59ece258227524475669eccc4e9f7d08a15b50.tar.gz |
Fix:traffic:Expand locations in all selected rectangles
Signed-off-by: mvglasow <michael -at- vonglasow.com>
Diffstat (limited to 'navit/traffic.c')
-rw-r--r-- | navit/traffic.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/navit/traffic.c b/navit/traffic.c index 8a7849f81..eddaeb4ef 100644 --- a/navit/traffic.c +++ b/navit/traffic.c @@ -880,8 +880,8 @@ static struct map_rect_priv * tm_rect_new(struct map_priv *priv, struct map_sele /* Current message */ struct traffic_message * message; - /* Map selection for current message */ - struct map_selection * ms; + /* Map selection for current message, current map rect selection */ + struct map_selection * msg_sel, * rect_sel; /* Attributes for traffic distortions generated from the current traffic message */ struct seg_data * data; @@ -899,15 +899,15 @@ static struct map_rect_priv * tm_rect_new(struct map_priv *priv, struct map_sele message = (struct traffic_message *) msgiter->data; if (message->priv->items == NULL) { traffic_location_set_enclosing_rect(message->location, NULL); - ms = traffic_location_get_rect(message->location, traffic_map_meth.pro); - if ((sel == NULL) || coord_rect_overlap(&(ms->u.c_rect), &(sel->u.c_rect))) { - /* TODO the sel criterion is obsolete if we keep the enclosing condition */ - /* TODO do this in an idle loop, not here */ - data = traffic_message_parse_events(message); - traffic_message_add_segments(message, priv->shared->ms, data, priv->shared->map, priv->shared->rt); - g_free(data); - } - map_selection_destroy(ms); + msg_sel = traffic_location_get_rect(message->location, traffic_map_meth.pro); + for (rect_sel = sel; rect_sel; rect_sel = rect_sel->next) + if (coord_rect_overlap(&(msg_sel->u.c_rect), &(rect_sel->u.c_rect))) { + /* TODO do this in an idle loop, not here */ + data = traffic_message_parse_events(message); + traffic_message_add_segments(message, priv->shared->ms, data, priv->shared->map, priv->shared->rt); + g_free(data); + } + map_selection_destroy(msg_sel); } } return mr; |