summaryrefslogtreecommitdiff
path: root/src/gui/menus/edition.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2017-08-26 22:15:05 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2017-08-26 22:15:05 (GMT)
commit8ca477e012b11a19363542d171b8e973d637641c (patch)
tree94a4fcde1779f031946eff7a36075f41a17cd73b /src/gui/menus/edition.c
parent4fb2ac107092671fe27fc3ebf9fc86dff7c3ec19 (diff)
Removed most of the functions using the editor items as global access to active items.
Diffstat (limited to 'src/gui/menus/edition.c')
-rw-r--r--src/gui/menus/edition.c59
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));
}