diff options
author | mdankov <mdankov@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2014-04-01 21:10:31 +0000 |
---|---|---|
committer | mdankov <mdankov@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2014-04-01 21:10:31 +0000 |
commit | 7ddd78aac8762fe135c4072bc608c6099dfe50a2 (patch) | |
tree | c869e7dd9e8a3999feed5153dfbc4b7376a826bd | |
parent | 0c87f18a47cd614166efefc96305e2a29044347c (diff) | |
download | navit-7ddd78aac8762fe135c4072bc608c6099dfe50a2.tar.gz |
Fix:gui_internal:Convert charset of all map-originated strings before using them.
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@5763 ffa7fe5e-494d-0410-b361-a75ebd5db220
-rw-r--r-- | navit/gui/internal/gui_internal.c | 20 | ||||
-rw-r--r-- | navit/gui/internal/gui_internal_poi.c | 24 |
2 files changed, 20 insertions, 24 deletions
diff --git a/navit/gui/internal/gui_internal.c b/navit/gui/internal/gui_internal.c index e9bf8804b..4a527fbd3 100644 --- a/navit/gui/internal/gui_internal.c +++ b/navit/gui/internal/gui_internal.c @@ -630,7 +630,7 @@ gui_internal_select_waypoint(struct gui_priv *this, const char *title, const cha struct map *map; struct map_rect *mr; struct item *item; - char *label,*text; + char *text; int i; int dstcount=navit_get_destination_count(this->nav)+1; @@ -655,9 +655,7 @@ gui_internal_select_waypoint(struct gui_priv *this, const char *title, const cha if(item->type!=type_waypoint && item->type!=type_route_end) continue; if (item_attr_get(item, attr_label, &attr)) { - label=map_convert_string(item->map, attr.u.str); - text=g_strdup_printf(_("Waypoint %s"), label); - map_convert_free(label); + text=g_strdup_printf(_("Waypoint %s"), map_convert_string_tmp(item->map, attr.u.str)); } else continue; gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill)); @@ -887,7 +885,7 @@ gui_internal_cmd_view_in_browser(struct gui_priv *this, struct widget *wm, void if (item) { while(item_attr_get(item, attr_url_local, &attr)) { if (! cmd) - cmd=g_strdup_printf("navit-browser.sh '%s' &",attr.u.str); + cmd=g_strdup_printf("navit-browser.sh '%s' &",map_convert_string_tmp(item->map,attr.u.str)); } } map_rect_destroy(mr); @@ -1150,7 +1148,7 @@ gui_internal_cmd_position_do(struct gui_priv *this, struct pcoord *pc_in, struct item = map_rect_get_item_byid(mr, wm->item.id_hi, wm->item.id_lo); if (item) { if (item_attr_get(item, attr_description, &attr)) - gui_internal_widget_append(w, gui_internal_label_new(this, attr.u.str)); + gui_internal_widget_append(w, gui_internal_label_new(this, map_convert_string_tmp(item->map,attr.u.str))); if (item_attr_get(item, attr_url_local, &attr)) { gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill)); gui_internal_widget_append(row, @@ -1264,7 +1262,7 @@ gui_internal_cmd_position_do(struct gui_priv *this, struct pcoord *pc_in, struct struct point p; struct transformation *trans; - char *text, *label; + char *text; struct map_selection *sel; GList *l, *ll; @@ -1293,9 +1291,7 @@ gui_internal_cmd_position_do(struct gui_priv *this, struct pcoord *pc_in, struct continue; } if (item_attr_get(itemo, attr_label, &attr)) { - label=map_convert_string(itemo->map, attr.u.str); - text=g_strdup(label); - map_convert_free(label); + text=g_strdup(map_convert_string_tmp(itemo->map, attr.u.str)); } else text=g_strdup(item_to_name(item->type)); gui_internal_widget_append(wtable,row=gui_internal_widget_table_row_new(this,gravity_left|orientation_horizontal|flags_fill)); @@ -1547,7 +1543,7 @@ gui_internal_cmd_bookmarks(struct gui_priv *this, struct widget *wm, void *data) while ((item=bookmarks_get_item(mattr.u.bookmarks))) { if (!item_attr_get(item, attr_label, &attr)) continue; - label_full=attr.u.str; + label_full=map_convert_string_tmp(item->map,attr.u.str); dbg(2,"full_labled: %s\n",label_full); // hassub == 1 if the item type is a sub-folder @@ -3145,7 +3141,7 @@ gui_internal_populate_route_table(struct gui_priv * this, struct navit * navit) | orientation_horizontal); gui_internal_widget_append(this->route_data.route_table,row); - label = gui_internal_label_new(this,attr.u.str); + label = gui_internal_label_new(this,map_convert_string_tmp(item->map,attr.u.str)); gui_internal_widget_append(row,label); label->item=*item; diff --git a/navit/gui/internal/gui_internal_poi.c b/navit/gui/internal/gui_internal_poi.c index f2ec92282..9679f48b9 100644 --- a/navit/gui/internal/gui_internal_poi.c +++ b/navit/gui/internal/gui_internal_poi.c @@ -111,7 +111,7 @@ gui_internal_poi_icon(struct gui_priv *this, struct item *item) src=el->u.icon.src; if(!src || !src[0]) src="%s"; - icon=g_strdup_printf(src,icon_src.u.str); + icon=g_strdup_printf(src,map_convert_string_tmp(item->map,icon_src.u.str)); } else { icon=g_strdup(el->u.icon.src); @@ -365,22 +365,22 @@ gui_internal_compose_item_address_string(struct item *item) char *s=g_strdup(""); struct attr attr; if(item_attr_get(item, attr_house_number, &attr)) - s=g_strjoin(" ",s,attr.u.str,NULL); + s=g_strjoin(" ",s,map_convert_string_tmp(item->map,attr.u.str),NULL); if(item_attr_get(item, attr_street_name, &attr)) - s=g_strjoin(" ",s,attr.u.str,NULL); + s=g_strjoin(" ",s,map_convert_string_tmp(item->map,attr.u.str),NULL); if(item_attr_get(item, attr_street_name_systematic, &attr)) - s=g_strjoin(" ",s,attr.u.str,NULL); + s=g_strjoin(" ",s,map_convert_string_tmp(item->map,attr.u.str),NULL); if(item_attr_get(item, attr_district_name, &attr)) - s=g_strjoin(" ",s,attr.u.str,NULL); + s=g_strjoin(" ",s,map_convert_string_tmp(item->map,attr.u.str),NULL); if(item_attr_get(item, attr_town_name, &attr)) - s=g_strjoin(" ",s,attr.u.str,NULL); + s=g_strjoin(" ",s,map_convert_string_tmp(item->map,attr.u.str),NULL); if(item_attr_get(item, attr_county_name, &attr)) - s=g_strjoin(" ",s,attr.u.str,NULL); + s=g_strjoin(" ",s,map_convert_string_tmp(item->map,attr.u.str),NULL); if(item_attr_get(item, attr_country_name, &attr)) - s=g_strjoin(" ",s,attr.u.str,NULL); + s=g_strjoin(" ",s,map_convert_string_tmp(item->map,attr.u.str),NULL); if(item_attr_get(item, attr_address, &attr)) - s=g_strjoin(" ",s,"|",attr.u.str,NULL); + s=g_strjoin(" ",s,"|",map_convert_string_tmp(item->map,attr.u.str),NULL); return s; } @@ -412,7 +412,7 @@ gui_internal_cmd_pois_item_selected(struct poi_param *param, struct item *item) if (param->isAddressFilter) { s=gui_internal_compose_item_address_string(item); } else if (item_attr_get(item, attr_label, &attr)) { - s=g_strdup_printf("%s %s", item_to_name(item->type), attr.u.str); + s=g_strdup_printf("%s %s", item_to_name(item->type), map_convert_string_tmp(item->map,attr.u.str)); } else { s=g_strdup(item_to_name(item->type)); } @@ -640,14 +640,14 @@ gui_internal_cmd_pois(struct gui_priv *this, struct widget *wm, void *data) if (item->type==type_house_number) { label=gui_internal_compose_item_address_string(item); } else if (item_attr_get(item, attr_label, &attr)) { - label=g_strdup(attr.u.str); + label=map_convert_string(item->map,attr.u.str); // Buildings which label is equal to addr:housenumber value // are duplicated by item_house_number. Don't include such // buildings into the list. This is true for OSM maps created with // maptool patched with #859 latest patch. // FIXME: For non-OSM maps, we probably would better don't skip these items. if(item->type==type_poly_building && item_attr_get(item, attr_house_number, &attr) ) { - if(strcmp(label,attr.u.str)==0) { + if(strcmp(label,map_convert_string_tmp(item->map,attr.u.str))==0) { g_free(label); continue; } |