diff options
Diffstat (limited to 'src/gui/panels/bookmarks.c')
-rw-r--r-- | src/gui/panels/bookmarks.c | 64 |
1 files changed, 47 insertions, 17 deletions
diff --git a/src/gui/panels/bookmarks.c b/src/gui/panels/bookmarks.c index 60daf67..b3af70c 100644 --- a/src/gui/panels/bookmarks.c +++ b/src/gui/panels/bookmarks.c @@ -579,41 +579,71 @@ static void on_collection_content_changed(GDbCollection *collec, DBAction action VMPA_BUFFER(virt); /* Adresse virtuelle */ GtkTreeIter iter; /* Point d'insertion */ + GtkTreeModel *model; /* Modèle de gestion courant */ + GDbBookmark *displayed; /* Elément de collection */ + if (action == DBA_ADD_ITEM || (action == DBA_CHANGE_STATE && g_db_item_is_active(G_DB_ITEM(bookmark)))) + { + store = GTK_TREE_STORE(gtk_tree_view_get_model(panel->treeview)); - printf(" Passage :: %d\n", action); + format = g_loaded_binary_get_format(panel->binary); - store = GTK_TREE_STORE(gtk_tree_view_get_model(panel->treeview)); + proc = g_loaded_binary_get_processor(panel->binary); + msize = g_arch_processor_get_memory_size(proc); + g_object_unref(G_OBJECT(proc)); - format = g_loaded_binary_get_format(panel->binary); - proc = g_loaded_binary_get_processor(panel->binary); - msize = g_arch_processor_get_memory_size(proc); - g_object_unref(G_OBJECT(proc)); + addr = g_db_bookmark_get_address(bookmark); + vmpa2_phys_to_string(addr, msize, phys, NULL); + vmpa2_virt_to_string(addr, msize, virt, NULL); + gtk_tree_store_append(store, &iter, NULL); + gtk_tree_store_set(store, &iter, + BMC_BOOKMARK, bookmark, + BMC_PICTURE, G_BOOKMARKS_PANEL_GET_CLASS(panel)->bookmark_img, + BMC_PHYSICAL, phys, + BMC_VIRTUAL, virt, + BMC_COMMENT, g_db_bookmark_get_comment(bookmark), + -1); - addr = g_db_bookmark_get_address(bookmark); - vmpa2_phys_to_string(addr, msize, phys, NULL); - vmpa2_virt_to_string(addr, msize, virt, NULL); - gtk_tree_store_append(store, &iter, NULL); - gtk_tree_store_set(store, &iter, - BMC_BOOKMARK, bookmark, - BMC_PICTURE, G_BOOKMARKS_PANEL_GET_CLASS(panel)->bookmark_img, - BMC_PHYSICAL, phys, - BMC_VIRTUAL, virt, - BMC_COMMENT, g_db_bookmark_get_comment(bookmark), - -1); + } + + else /*if (action == DBA_CHANGE_STATE && g_db_item_is_active(G_DB_ITEM(bookmark)))*/ + { + + store = GTK_TREE_STORE(gtk_tree_view_get_model(panel->treeview)); + model = GTK_TREE_MODEL(store); + + + if (gtk_tree_model_get_iter_first(model, &iter)) + do + { + gtk_tree_model_get(model, &iter, BMC_BOOKMARK, &displayed, -1); + if (bookmark == displayed) + { + gtk_tree_store_remove(store, &iter); + break; + } + + g_object_unref(G_OBJECT(displayed)); + + } + while (gtk_tree_model_iter_next(model, &iter)); + + + + } } |