summaryrefslogtreecommitdiff
path: root/navit/traffic.c
diff options
context:
space:
mode:
authormvglasow <michael -at- vonglasow.com>2019-07-29 23:23:27 +0200
committermvglasow <michael -at- vonglasow.com>2019-07-29 23:23:27 +0200
commitee59ece258227524475669eccc4e9f7d08a15b50 (patch)
tree2bca8acae032a18006437bd568d3274988e1ce10 /navit/traffic.c
parente2d9a74599f672b31ba695309f42f8e01167ade2 (diff)
downloadnavit-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.c22
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;