diff options
Diffstat (limited to 'src/gui/menus/edition.c')
-rw-r--r-- | src/gui/menus/edition.c | 59 |
1 files changed, 33 insertions, 26 deletions
diff --git a/src/gui/menus/edition.c b/src/gui/menus/edition.c index f41111d..2491e3d 100644 --- a/src/gui/menus/edition.c +++ b/src/gui/menus/edition.c @@ -31,6 +31,7 @@ #include <i18n.h> +#include "../core/global.h" #include "../dialogs/bookmark.h" #include "../dialogs/goto.h" #include "../dialogs/gotox.h" @@ -44,13 +45,13 @@ static void mcb_edition_goto(GtkMenuItem *, GMenuBar *); /* Réagit avec le menu "Edition -> Operande numérique -> ...". */ -static void mcb_edition_switch_numeric_operand(GtkMenuItem *, GMenuBar *); +static void mcb_edition_switch_numeric_operand(GtkMenuItem *, gpointer); /* Réagit avec le menu "Edition -> Revenir en arrière". */ static void mcb_edition_go_back(GtkMenuItem *, GMenuBar *); /* Réagit avec le menu "Edition -> Suivre la référence". */ -static void mcb_edition_follow_ref(GtkMenuItem *, GMenuBar *); +static void mcb_edition_follow_ref(GtkMenuItem *, gpointer); /* Réagit avec le menu "Edition -> Lister toutes les réfs...". */ static void mcb_edition_list_xrefs(GtkMenuItem *, GMenuBar *); @@ -116,25 +117,25 @@ GtkWidget *build_menu_edition(GObject *ref, GtkAccelGroup *accgroup, GMenuBar *b deepmenubar = qck_create_menu(GTK_MENU_ITEM(submenuitem)); deepmenuitem = qck_create_menu_item(ref, "mnu_edit_switch_hex", _("Hexadecimal"), - G_CALLBACK(mcb_edition_switch_numeric_operand), bar); + G_CALLBACK(mcb_edition_switch_numeric_operand), NULL); add_accelerator_to_menu_item(deepmenuitem, "H", accgroup); g_object_set_data(G_OBJECT(deepmenuitem), "kind_of_switch", GUINT_TO_POINTER(IOD_HEX)); gtk_container_add(GTK_CONTAINER(deepmenubar), deepmenuitem); deepmenuitem = qck_create_menu_item(ref, "mnu_edit_switch_dec", _("Decimal"), - G_CALLBACK(mcb_edition_switch_numeric_operand), bar); + G_CALLBACK(mcb_edition_switch_numeric_operand), NULL); add_accelerator_to_menu_item(deepmenuitem, "D", accgroup); g_object_set_data(G_OBJECT(deepmenuitem), "kind_of_switch", GUINT_TO_POINTER(IOD_DEC)); gtk_container_add(GTK_CONTAINER(deepmenubar), deepmenuitem); deepmenuitem = qck_create_menu_item(ref, "mnu_edit_switch_oct", _("Octal"), - G_CALLBACK(mcb_edition_switch_numeric_operand), bar); + G_CALLBACK(mcb_edition_switch_numeric_operand), NULL); add_accelerator_to_menu_item(deepmenuitem, "O", accgroup); g_object_set_data(G_OBJECT(deepmenuitem), "kind_of_switch", GUINT_TO_POINTER(IOD_OCT)); gtk_container_add(GTK_CONTAINER(deepmenubar), deepmenuitem); deepmenuitem = qck_create_menu_item(ref, "mnu_edit_switch_bin", _("Binary"), - G_CALLBACK(mcb_edition_switch_numeric_operand), bar); + G_CALLBACK(mcb_edition_switch_numeric_operand), NULL); add_accelerator_to_menu_item(deepmenuitem, "B", accgroup); g_object_set_data(G_OBJECT(deepmenuitem), "kind_of_switch", GUINT_TO_POINTER(IOD_BIN)); gtk_container_add(GTK_CONTAINER(deepmenubar), deepmenuitem); @@ -143,7 +144,7 @@ GtkWidget *build_menu_edition(GObject *ref, GtkAccelGroup *accgroup, GMenuBar *b gtk_container_add(GTK_CONTAINER(deepmenubar), deepmenuitem); deepmenuitem = qck_create_menu_item(ref, "mnu_edit_switch_def", _("Default"), - G_CALLBACK(mcb_edition_switch_numeric_operand), bar); + G_CALLBACK(mcb_edition_switch_numeric_operand), NULL); g_object_set_data(G_OBJECT(deepmenuitem), "kind_of_switch", GUINT_TO_POINTER(IOD_COUNT)); gtk_container_add(GTK_CONTAINER(deepmenubar), deepmenuitem); @@ -160,7 +161,7 @@ GtkWidget *build_menu_edition(GObject *ref, GtkAccelGroup *accgroup, GMenuBar *b gtk_container_add(GTK_CONTAINER(menubar), submenuitem); submenuitem = qck_create_menu_item(ref, "mnu_edit_follow_ref", _("Follow the reference"), - G_CALLBACK(mcb_edition_follow_ref), bar); + G_CALLBACK(mcb_edition_follow_ref), NULL); add_accelerator_to_menu_item(submenuitem, "Return", accgroup); gtk_container_add(GTK_CONTAINER(menubar), submenuitem); @@ -321,8 +322,9 @@ static void mcb_edition_goto(GtkMenuItem *menuitem, GMenuBar *bar) { addr = get_address_from_goto_dialog(dialog); - panel = g_editor_item_get_current_view(G_EDITOR_ITEM(bar)); + panel = get_current_view(); gtk_display_panel_request_move(panel, addr); + g_object_unref(G_OBJECT(panel)); delete_vmpa(addr); @@ -336,7 +338,7 @@ static void mcb_edition_goto(GtkMenuItem *menuitem, GMenuBar *bar) /****************************************************************************** * * * Paramètres : menuitem = élément de menu sélectionné. * -* bar = barre de menu parente. * +* unused = adresse non utilisée ici. * * * * Description : Réagit avec le menu "Edition -> Operande numérique -> ...". * * * @@ -346,10 +348,9 @@ static void mcb_edition_goto(GtkMenuItem *menuitem, GMenuBar *bar) * * ******************************************************************************/ -static void mcb_edition_switch_numeric_operand(GtkMenuItem *menuitem, GMenuBar *bar) +static void mcb_edition_switch_numeric_operand(GtkMenuItem *menuitem, gpointer unused) { ImmOperandDisplay display; /* Type de basculement */ - GEditorItem *editem; /* Autre version de la barre */ GtkDisplayPanel *panel; /* Afficheur effectif de code */ GBufferLine *line; /* Ligne de position courante */ GObject *creator; /* Créateur à l'orgine du seg. */ @@ -361,9 +362,7 @@ static void mcb_edition_switch_numeric_operand(GtkMenuItem *menuitem, GMenuBar * display = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(menuitem), "kind_of_switch")); - editem = G_EDITOR_ITEM(bar); - - panel = g_editor_item_get_current_view(editem); + panel = get_current_view(); if (gtk_display_panel_get_position(panel, &line, &creator)) { @@ -371,7 +370,7 @@ static void mcb_edition_switch_numeric_operand(GtkMenuItem *menuitem, GMenuBar * range = g_buffer_line_get_range(line); - binary = g_editor_item_get_current_binary(editem); + binary = get_current_binary(); proc = g_loaded_binary_get_processor(binary); instr = g_arch_processor_find_instr_by_address(proc, get_mrange_addr(range)); @@ -384,12 +383,15 @@ static void mcb_edition_switch_numeric_operand(GtkMenuItem *menuitem, GMenuBar * g_loaded_binary_add_to_collection(binary, G_DB_ITEM(switcher)); g_object_unref(G_OBJECT(proc)); + g_object_unref(G_OBJECT(binary)); g_object_unref(creator); g_object_unref(G_OBJECT(line)); } + g_object_unref(G_OBJECT(panel)); + } @@ -415,7 +417,7 @@ static void mcb_edition_go_back(GtkMenuItem *menuitem, GMenuBar *bar) /****************************************************************************** * * * Paramètres : menuitem = élément de menu sélectionné. * -* bar = barre de menu parente. * +* unused = adresse non utilisée ici. * * * * Description : Réagit avec le menu "Edition -> Suivre la référence". * * * @@ -425,7 +427,7 @@ static void mcb_edition_go_back(GtkMenuItem *menuitem, GMenuBar *bar) * * ******************************************************************************/ -static void mcb_edition_follow_ref(GtkMenuItem *menuitem, GMenuBar *bar) +static void mcb_edition_follow_ref(GtkMenuItem *menuitem, gpointer unused) { GtkDisplayPanel *panel; /* Afficheur effectif de code */ GBufferLine *line; /* Ligne de position courante */ @@ -434,7 +436,7 @@ static void mcb_edition_follow_ref(GtkMenuItem *menuitem, GMenuBar *bar) vmpa2t addr; /* Adresse de destination */ virt_t virt; /* Adresse virtuelle */ - panel = g_editor_item_get_current_view(G_EDITOR_ITEM(bar)); + panel = get_current_view(); if (gtk_display_panel_get_position(panel, &line, &creator)) { @@ -465,6 +467,8 @@ static void mcb_edition_follow_ref(GtkMenuItem *menuitem, GMenuBar *bar) } + g_object_unref(G_OBJECT(panel)); + } @@ -493,13 +497,13 @@ static void mcb_edition_list_xrefs(GtkMenuItem *menuitem, GMenuBar *bar) GtkWidget *dialog; /* Boîte de dialogue à montrer */ vmpa2t *addr; /* Adresse de destination */ - panel = g_editor_item_get_current_view(G_EDITOR_ITEM(bar)); + panel = get_current_view(); if (gtk_display_panel_get_position(panel, &line, NULL)) { range = g_buffer_line_get_range(line); - binary = g_editor_item_get_current_binary(G_EDITOR_ITEM(bar)); + binary = get_current_binary(); proc = g_loaded_binary_get_processor(binary); /** @@ -532,11 +536,14 @@ static void mcb_edition_list_xrefs(GtkMenuItem *menuitem, GMenuBar *bar) g_object_unref(G_OBJECT(instr)); g_object_unref(G_OBJECT(proc)); + g_object_unref(G_OBJECT(binary)); g_object_unref(G_OBJECT(line)); } + g_object_unref(G_OBJECT(panel)); + } @@ -555,7 +562,6 @@ static void mcb_edition_list_xrefs(GtkMenuItem *menuitem, GMenuBar *bar) static void mcb_edition_bookmarks_toggle(GtkMenuItem *menuitem, GMenuBar *bar) { - GEditorItem *editem; /* Autre version de la barre */ GtkDisplayPanel *panel; /* Vue offrant l'affichage */ const vmpa2t *curloc; /* Localisation d'un curseur */ GLoadedBinary *binary; /* Binaire en cours d'étude */ @@ -566,17 +572,15 @@ static void mcb_edition_bookmarks_toggle(GtkMenuItem *menuitem, GMenuBar *bar) GDbItem *bookmark; /* Nouveau signet défini */ gint ret; /* Retour de confirmation */ - editem = G_EDITOR_ITEM(bar); - /* Détermination de l'adresse visée */ - panel = g_editor_item_get_current_view(editem); + panel = get_current_view(); curloc = gtk_display_panel_get_caret_location(panel); /* Accès à la collection */ - binary = g_editor_item_get_current_binary(editem); + binary = get_current_binary(); collec = g_loaded_binary_find_collection(binary, DBF_BOOKMARKS); /** @@ -632,6 +636,9 @@ static void mcb_edition_bookmarks_toggle(GtkMenuItem *menuitem, GMenuBar *bar) } g_object_unref(G_OBJECT(collec)); + g_object_unref(G_OBJECT(binary)); + + g_object_unref(G_OBJECT(panel)); } |