From 2cbe88270667299380097d7620a207f57dcfb8b5 Mon Sep 17 00:00:00 2001 From: martin-s Date: Mon, 30 Nov 2009 22:39:38 +0000 Subject: [PATCH] Add:gui_internal:Possibility to select bookmark by name git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@2813 ffa7fe5e-494d-0410-b361-a75ebd5db220 --- navit/navit/gui/internal/gui_internal.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/navit/navit/gui/internal/gui_internal.c b/navit/navit/gui/internal/gui_internal.c index 4069940..7fde3a5 100644 --- a/navit/navit/gui/internal/gui_internal.c +++ b/navit/navit/gui/internal/gui_internal.c @@ -2425,7 +2425,7 @@ gui_internal_cmd_bookmarks(struct gui_priv *this, struct widget *wm, void *data) struct map_rect *mr=NULL; struct item *item; char *label_full,*l,*prefix="",*pos; - int len,plen,hassub; + int len,plen,hassub,found=0; struct widget *wb,*w,*wbm; GHashTable *hash; struct coord c; @@ -2438,8 +2438,12 @@ gui_internal_cmd_bookmarks(struct gui_priv *this, struct widget *wm, void *data) w->spy=this->spacing*3; gui_internal_widget_append(wb, w); - if (wm && wm->prefix) - prefix=wm->prefix; + if (data) + prefix=data; + else { + if (wm && wm->prefix) + prefix=wm->prefix; + } plen=strlen(prefix); if(navit_get_attr(this->nav, attr_bookmark_map, &mattr, NULL) && mattr.u.map && (mr=map_rect_new(mattr.u.map, NULL))) { @@ -2475,6 +2479,11 @@ gui_internal_cmd_bookmarks(struct gui_priv *this, struct widget *wm, void *data) wbm->prefix=g_malloc(len+2); strncpy(wbm->prefix, label_full, len+1); wbm->prefix[len+1]='\0'; + if (!l[0]) { + gui_internal_cmd_set_destination(this, wbm, wbm->name); + found=1; + break; + } } else { gui_internal_widget_destroy(this, wbm); } @@ -2485,13 +2494,20 @@ gui_internal_cmd_bookmarks(struct gui_priv *this, struct widget *wm, void *data) } g_hash_table_destroy(hash); } - gui_internal_menu_render(this); + if (found) + gui_internal_check_exit(this); + else + gui_internal_menu_render(this); } static void gui_internal_cmd2_bookmarks(struct gui_priv *this, char *function, struct attr **in, struct attr ***out, int *valid) { - gui_internal_cmd_bookmarks(this, NULL, NULL); + char *str=NULL; + if (in && in[0] && ATTR_IS_STRING(in[0]->type)) { + str=in[0]->u.str; + } + gui_internal_cmd_bookmarks(this, NULL, str); } static void gui_internal_keypress_do(struct gui_priv *this, char *key) -- 2.7.4