From: <aka...@us...> - 2010-04-28 12:50:45
|
Revision: 3203 http://navit.svn.sourceforge.net/navit/?rev=3203&view=rev Author: akashihi Date: 2010-04-28 12:50:38 +0000 (Wed, 28 Apr 2010) Log Message: ----------- Fix:core:Bookmark cut/copy/delete operations are hierarchy-aware now Modified Paths: -------------- trunk/navit/navit/bookmarks.c trunk/navit/navit/bookmarks.h Modified: trunk/navit/navit/bookmarks.c =================================================================== --- trunk/navit/navit/bookmarks.c 2010-04-28 12:13:08 UTC (rev 3202) +++ trunk/navit/navit/bookmarks.c 2010-04-28 12:50:38 UTC (rev 3203) @@ -463,28 +463,34 @@ } int -bookmarks_cut_bookmark(struct bookmarks *this_, const char *description) { - if (bookmarks_copy_bookmark(this_,description)) { - return bookmarks_del_bookmark(this_,description); +bookmarks_cut_bookmark(struct bookmarks *this_, const char *label) { + if (bookmarks_copy_bookmark(this_,label)) { + return bookmarks_delete_bookmark(this_,label); } return FALSE; } int -bookmarks_copy_bookmark(struct bookmarks *this_, const char *description) { - struct bookmark_item_priv *b_item; - b_item=(struct bookmark_item_priv*)g_hash_table_lookup(this_->bookmarks_hash,description); - if (b_item) { - this_->clipboard->c=b_item->c; - this_->clipboard->type=b_item->type; - if (!this_->clipboard->label) { - g_free(this_->clipboard->label); +bookmarks_copy_bookmark(struct bookmarks *this_, const char *label) { + bookmarks_item_rewind(this_); + if (this_->current->children==NULL) { + return 0; + } + while (this_->current->iter!=NULL) { + struct bookmark_item_priv* data=(struct bookmark_item_priv*)this_->current->iter->data; + if (!strcmp(data->label,label)) { + this_->clipboard->c=data->c; + this_->clipboard->type=data->type; + this_->clipboard->item=data->item; + this_->clipboard->children=data->children; + if (!this_->clipboard->label) { + g_free(this_->clipboard->label); + } + this_->clipboard->label=g_strdup(data->label); + return TRUE; } - this_->clipboard->label=g_strdup(b_item->label); - - return TRUE; + this_->current->iter=g_list_next(this_->current->iter); } - return FALSE; } int @@ -513,22 +519,28 @@ int -bookmarks_del_bookmark(struct bookmarks *this_, const char *description) { - struct bookmark_item_priv *b_item; +bookmarks_delete_bookmark(struct bookmarks *this_, const char *label) { int result; - b_item=(struct bookmark_item_priv*)g_hash_table_lookup(this_->bookmarks_hash,description); - if (b_item) { - this_->bookmarks_list=g_list_first(this_->bookmarks_list); - this_->bookmarks_list=g_list_remove(this_->bookmarks_list,b_item); + bookmarks_item_rewind(this_); + if (this_->current->children==NULL) { + return 0; + } + while (this_->current->iter!=NULL) { + struct bookmark_item_priv* data=(struct bookmark_item_priv*)this_->current->iter->data; + if (!strcmp(data->label,label)) { + this_->bookmarks_list=g_list_first(this_->bookmarks_list); + this_->bookmarks_list=g_list_remove(this_->bookmarks_list,data); - result=bookmarks_store_bookmarks_to_file(this_,0,0); + result=bookmarks_store_bookmarks_to_file(this_,0,0); - callback_list_call_attr_0(this_->attr_cbl, attr_bookmark_map); - bookmarks_clear_hash(this_); - bookmarks_load_hash(this_); + callback_list_call_attr_0(this_->attr_cbl, attr_bookmark_map); + bookmarks_clear_hash(this_); + bookmarks_load_hash(this_); - return result; + return result; + } + this_->current->iter=g_list_next(this_->current->iter); } return FALSE; Modified: trunk/navit/navit/bookmarks.h =================================================================== --- trunk/navit/navit/bookmarks.h 2010-04-28 12:13:08 UTC (rev 3202) +++ trunk/navit/navit/bookmarks.h 2010-04-28 12:50:38 UTC (rev 3203) @@ -31,11 +31,11 @@ void bookmarks_add_callback(struct bookmarks *this_, struct callback *cb); int bookmarks_add_bookmark(struct bookmarks *this_, struct pcoord *c, const char *description); -int bookmarks_cut_bookmark(struct bookmarks *this_, const char *description); -int bookmarks_copy_bookmark(struct bookmarks *this_, const char *description); +int bookmarks_cut_bookmark(struct bookmarks *this_, const char *label); +int bookmarks_copy_bookmark(struct bookmarks *this_, const char *label); int bookmarks_paste_bookmark(struct bookmarks *this_, const char *path); int bookmarks_rename_bookmark(struct bookmarks *this_, const char *oldName, const char* newName); -int bookmarks_del_bookmark(struct bookmarks *this_, const char *description); +int bookmarks_delete_bookmark(struct bookmarks *this_, const char *label); struct map* bookmarks_get_map(struct bookmarks *this_); enum projection bookmarks_get_projection(struct bookmarks *this_); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |