From 6b785b0e6c6048a4a8f1f81f9eaa407e05622368 Mon Sep 17 00:00:00 2001
From: Cyrille Bagard <nocbos@gmail.com>
Date: Sat, 11 Jan 2020 00:04:51 +0100
Subject: Cleaned editor items by removing a direct link to the main window.

---
 src/gui/editem-int.h    |  2 --
 src/gui/editem.c        | 19 -------------
 src/gui/editem.h        |  3 ---
 src/gui/editor.c        |  2 +-
 src/gui/menus/binary.c  | 22 +++++----------
 src/gui/menus/binary.h  |  4 +--
 src/gui/menus/edition.c | 41 +++++++++++++++-------------
 src/gui/menus/edition.h |  4 +--
 src/gui/menus/menubar.c | 32 +++++++++++++---------
 src/gui/menus/options.c | 33 +++++++++++++----------
 src/gui/menus/project.c |  8 +++++-
 src/gui/menus/view.c    | 71 ++++++++++++++++++++++---------------------------
 src/gui/menus/view.h    |  6 ++---
 src/gui/status.c        |  7 ++---
 src/gui/status.h        |  2 +-
 src/gui/tb/tbitem.c     |  5 ----
 16 files changed, 117 insertions(+), 144 deletions(-)

diff --git a/src/gui/editem-int.h b/src/gui/editem-int.h
index cf2d813..29f83e0 100644
--- a/src/gui/editem-int.h
+++ b/src/gui/editem-int.h
@@ -63,8 +63,6 @@ struct _GEditorItem
 
     DL_LIST_ITEM(link);                     /* Maillon de liste chaînée    */
 
-    GObject *ref;                           /* Espce de référencement      */
-
     const char *name;                       /* Nom du panneau              */
     GtkWidget *widget;                      /* Composant GTK d'affichage   */
 
diff --git a/src/gui/editem.c b/src/gui/editem.c
index 96d63c7..f1aa805 100644
--- a/src/gui/editem.c
+++ b/src/gui/editem.c
@@ -81,25 +81,6 @@ static void g_editor_item_init(GEditorItem *item)
 *                                                                             *
 *  Paramètres  : item = instance à consulter.                                 *
 *                                                                             *
-*  Description : Fournit l'adresse de l'espace de référencement global.       *
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-GObject *g_editor_item_get_global_ref(const GEditorItem *item)
-{
-    return item->ref;
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : item = instance à consulter.                                 *
-*                                                                             *
 *  Description : Fournit le nom humain attribué à l'élément réactif.          *
 *                                                                             *
 *  Retour      : Désignation (courte) de l'élément de l'éditeur.              *
diff --git a/src/gui/editem.h b/src/gui/editem.h
index 5adc288..a5c5b0e 100644
--- a/src/gui/editem.h
+++ b/src/gui/editem.h
@@ -53,9 +53,6 @@ typedef struct _GEditorItemClass GEditorItemClass;
 /* Indique le type défini pour un élément réactif d'éditeur. */
 GType g_editor_item_get_type(void);
 
-/* Fournit l'adresse de l'espace de référencement global. */
-GObject *g_editor_item_get_global_ref(const GEditorItem *);
-
 /* Fournit le nom humain attribué à l'élément réactif. */
 const char *g_editor_item_get_name(const GEditorItem *);
 
diff --git a/src/gui/editor.c b/src/gui/editor.c
index 6a270fb..4d3931a 100644
--- a/src/gui/editor.c
+++ b/src/gui/editor.c
@@ -287,7 +287,7 @@ GtkWidget *create_editor(void)
 
     /* Barre de statut générale */
 
-    editem = g_status_info_new(ref);
+    editem = g_status_info_new();
     register_editor_item(editem);
 
     widget = g_editor_item_get_widget(editem);
diff --git a/src/gui/menus/binary.c b/src/gui/menus/binary.c
index aeaf6f6..65b371b 100644
--- a/src/gui/menus/binary.c
+++ b/src/gui/menus/binary.c
@@ -142,7 +142,8 @@ GtkWidget *build_menu_binary(GObject *ref, GMenuBar *bar)
 
 /******************************************************************************
 *                                                                             *
-*  Paramètres  : new = nouveau contenu chargé à analyser.                     *
+*  Paramètres  : ref = espace de référencement global.                        *
+*                new = nouveau contenu chargé à analyser.                     *
 *                                                                             *
 *  Description : Réagit à un changement d'affichage principal de contenu.     *
 *                                                                             *
@@ -152,20 +153,13 @@ GtkWidget *build_menu_binary(GObject *ref, GMenuBar *bar)
 *                                                                             *
 ******************************************************************************/
 
-void update_access_for_content_in_menu_binary(GLoadedContent *new)
+void update_access_for_content_in_menu_binary(GObject *ref, GLoadedContent *new)
 {
-    GObject *ref;                           /* Espace de référencements    */
     gboolean access;                        /* Accès à déterminer          */
     GtkWidget *item;                        /* Elément de menu à traiter   */
 
-    /* Préliminaire */
-
-    ref = get_global_ref();
-
     access = G_IS_LOADED_BINARY(new);
 
-    /* Menus */
-
     item = GTK_WIDGET(g_object_get_data(ref, "mnu_binary_epoints"));
     gtk_widget_set_sensitive(item, access);
 
@@ -180,7 +174,8 @@ void update_access_for_content_in_menu_binary(GLoadedContent *new)
 
 /******************************************************************************
 *                                                                             *
-*  Paramètres  : new = nouvelle vue du contenu chargé analysé.                *
+*  Paramètres  : ref = espace de référencement global.                        *
+*                new = nouvelle vue du contenu chargé analysé.                *
 *                                                                             *
 *  Description : Lance une actualisation du fait d'un changement de support.  *
 *                                                                             *
@@ -190,16 +185,11 @@ void update_access_for_content_in_menu_binary(GLoadedContent *new)
 *                                                                             *
 ******************************************************************************/
 
-void update_access_for_view_in_menu_binary(GLoadedPanel *new)
+void update_access_for_view_in_menu_binary(GObject *ref, GLoadedPanel *new)
 {
-    GObject *ref;                           /* Espace de référencements    */
     gboolean access;                        /* Accès à déterminer          */
     GtkWidget *item;                        /* Elément de menu à traiter   */
 
-    ref = get_global_ref();
-
-    /* Exportation de graphiques */
-
     access = GTK_IS_GRAPH_DISPLAY(new);
 
     item = GTK_WIDGET(g_object_get_data(ref, "mnu_binary_export_graph"));
diff --git a/src/gui/menus/binary.h b/src/gui/menus/binary.h
index a752626..e21c4eb 100644
--- a/src/gui/menus/binary.h
+++ b/src/gui/menus/binary.h
@@ -38,10 +38,10 @@
 GtkWidget *build_menu_binary(GObject *, GMenuBar *);
 
 /* Réagit à un changement d'affichage principal de contenu. */
-void update_access_for_content_in_menu_binary(GLoadedContent *);
+void update_access_for_content_in_menu_binary(GObject *, GLoadedContent *);
 
 /* Lance une actualisation du fait d'un changement de support. */
-void update_access_for_view_in_menu_binary(GLoadedPanel *);
+void update_access_for_view_in_menu_binary(GObject *, GLoadedPanel *);
 
 
 
diff --git a/src/gui/menus/edition.c b/src/gui/menus/edition.c
index cdf8aa3..e1ef696 100644
--- a/src/gui/menus/edition.c
+++ b/src/gui/menus/edition.c
@@ -237,7 +237,8 @@ GtkWidget *build_menu_edition(GObject *ref, GMenuBar *bar)
 
 /******************************************************************************
 *                                                                             *
-*  Paramètres  : new = nouvelle vue du contenu chargé analysé.                *
+*  Paramètres  : ref = espace de référencement global.                        *
+*                new = nouvelle vue du contenu chargé analysé.                *
 *                                                                             *
 *  Description : Lance une actualisation du fait d'un changement de support.  *
 *                                                                             *
@@ -247,14 +248,11 @@ GtkWidget *build_menu_edition(GObject *ref, GMenuBar *bar)
 *                                                                             *
 ******************************************************************************/
 
-void update_access_for_view_in_menu_edition(GLoadedPanel *new)
+void update_access_for_view_in_menu_edition(GObject *ref, GLoadedPanel *new)
 {
-    GObject *ref;                           /* Espace de référencements    */
     gboolean access;                        /* Accès à déterminer          */
     GtkWidget *item;                        /* Elément de menu à traiter   */
 
-    ref = get_global_ref();
-
     /* Déplacements ciblés */
 
     access = GTK_IS_BLOCK_DISPLAY(new) || GTK_IS_GRAPH_DISPLAY(new);
@@ -325,7 +323,8 @@ void update_access_for_view_in_menu_edition(GLoadedPanel *new)
 
 /******************************************************************************
 *                                                                             *
-*  Paramètres  : panel  = vue d'affichage active ou NULL si aucune.           *
+*  Paramètres  : ref    = espace de référencement global.                     *
+*                panel  = vue d'affichage active ou NULL si aucune.           *
 *                cursor = suivi des positions à consulter.                    *
 *                                                                             *
 *  Description : Met à jour les accès du menu "Edition" selon une position.   *
@@ -336,15 +335,12 @@ void update_access_for_view_in_menu_edition(GLoadedPanel *new)
 *                                                                             *
 ******************************************************************************/
 
-void update_access_for_cursor_in_menu_edition(GLoadedPanel *panel, const GLineCursor *cursor)
+void update_access_for_cursor_in_menu_edition(GObject *ref, GLoadedPanel *panel, const GLineCursor *cursor)
 {
-    GObject *ref;                           /* Espace de référencements    */
     GObject *creator;                       /* Créateur à l'orgine du seg. */
     gboolean access;                        /* Accès à déterminer          */
     GtkWidget *item;                        /* Elément de menu à traiter   */
 
-    ref = get_global_ref();
-
     /* Préliminaire */
 
     /**
@@ -420,14 +416,15 @@ void update_access_for_cursor_in_menu_edition(GLoadedPanel *panel, const GLineCu
 
 static void mcb_edition_goto(GtkMenuItem *menuitem, GMenuBar *bar)
 {
-    GObject *ref;                           /* Espace de référencements    */
+    GtkWindow *editor;                      /* Fenêtre graphique principale*/
     GtkWidget *dialog;                      /* Boîte de dialogue à montrer */
     vmpa2t *addr;                           /* Adresse de destination      */
     GLoadedPanel *panel;                    /* Afficheur effectif de code  */
     GLoadedBinary *binary;                  /* Binaire en cours d'édition  */
 
-    ref = g_editor_item_get_global_ref(G_EDITOR_ITEM(bar));
-    dialog = create_goto_dialog(GTK_WINDOW(ref));
+    editor = get_editor_window();
+
+    dialog = create_goto_dialog(editor);
 
     if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK)
     {
@@ -450,6 +447,8 @@ static void mcb_edition_goto(GtkMenuItem *menuitem, GMenuBar *bar)
 
     gtk_widget_destroy(dialog);
 
+    g_object_unref(G_OBJECT(editor));
+
 }
 
 
@@ -616,7 +615,7 @@ static void mcb_edition_list_xrefs(GtkMenuItem *menuitem, GMenuBar *bar)
     GLoadedBinary *binary;                  /* Représentation binaire      */
     GArchProcessor *proc;                   /* Processeur de l'architecture*/
     GArchInstruction *instr;                /* Point de croisements        */
-    GObject *ref;                           /* Espace de référencements    */
+    GtkWindow *editor;                      /* Fenêtre graphique principale*/
     GtkWidget *dialog;                      /* Boîte de dialogue à montrer */
     vmpa2t *dest;                           /* Adresse de destination      */
 
@@ -642,9 +641,9 @@ static void mcb_edition_list_xrefs(GtkMenuItem *menuitem, GMenuBar *bar)
 
     if (instr != NULL)
     {
-        ref = g_editor_item_get_global_ref(G_EDITOR_ITEM(bar));
+        editor = get_editor_window();
 
-        dialog = create_gotox_dialog_for_cross_references(GTK_WINDOW(ref), binary, instr, true);
+        dialog = create_gotox_dialog_for_cross_references(editor, binary, instr, true);
 
         if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK)
         {
@@ -658,6 +657,8 @@ static void mcb_edition_list_xrefs(GtkMenuItem *menuitem, GMenuBar *bar)
 
         gtk_widget_destroy(dialog);
 
+        g_object_unref(G_OBJECT(editor));
+
         g_object_unref(G_OBJECT(instr));
 
     }
@@ -691,7 +692,7 @@ static void mcb_edition_bookmarks_toggle(GtkMenuItem *menuitem, GMenuBar *bar)
     GLoadedBinary *binary;                  /* Binaire en cours d'étude    */
     GDbCollection *collec;                  /* Collection à manipuler      */
     GDbItem *exist;                         /* Sens du basculement courant */
-    GObject *ref;                           /* Espace de référencements    */
+    GtkWindow *editor;                      /* Fenêtre graphique principale*/
     GtkBuilder *builder;                    /* Constructeur utilisé        */
     GtkWidget *dialog;                      /* Boîte de dialogue à montrer */
     GDbItem *bookmark;                      /* Nouveau signet défini       */
@@ -727,9 +728,9 @@ static void mcb_edition_bookmarks_toggle(GtkMenuItem *menuitem, GMenuBar *bar)
 
     else
     {
-        ref = g_editor_item_get_global_ref(G_EDITOR_ITEM(bar));
+        editor = get_editor_window();
 
-        dialog = create_bookmark_dialog(GTK_WINDOW(ref), &builder);
+        dialog = create_bookmark_dialog(editor, &builder);
 
         ret = gtk_dialog_run(GTK_DIALOG(dialog));
 
@@ -745,6 +746,8 @@ static void mcb_edition_bookmarks_toggle(GtkMenuItem *menuitem, GMenuBar *bar)
 
         g_object_unref(G_OBJECT(builder));
 
+        g_object_unref(G_OBJECT(editor));
+
     }
 
     g_object_unref(G_OBJECT(collec));
diff --git a/src/gui/menus/edition.h b/src/gui/menus/edition.h
index 596ceba..3b22650 100644
--- a/src/gui/menus/edition.h
+++ b/src/gui/menus/edition.h
@@ -38,10 +38,10 @@
 GtkWidget *build_menu_edition(GObject *, GMenuBar *);
 
 /* Lance une actualisation du fait d'un changement de support. */
-void update_access_for_view_in_menu_edition(GLoadedPanel *);
+void update_access_for_view_in_menu_edition(GObject *, GLoadedPanel *);
 
 /* Met à jour les accès du menu "Edition" selon une position. */
-void update_access_for_cursor_in_menu_edition(GLoadedPanel *, const GLineCursor *);
+void update_access_for_cursor_in_menu_edition(GObject *, GLoadedPanel *, const GLineCursor *);
 
 
 
diff --git a/src/gui/menus/menubar.c b/src/gui/menus/menubar.c
index d386362..97aa24f 100644
--- a/src/gui/menus/menubar.c
+++ b/src/gui/menus/menubar.c
@@ -35,6 +35,7 @@
 #include "project.h"
 #include "view.h"
 #include "../editem-int.h"
+#include "../core/global.h"
 
 
 
@@ -209,13 +210,8 @@ GEditorItem *g_menu_bar_new(GObject *ref)
 
     result = g_object_new(G_TYPE_MENU_BAR, NULL);
 
-    /* Initialisation générique */
-
     item = G_EDITOR_ITEM(result);
 
-    g_object_ref(ref);
-    item->ref = ref;
-
     /* Fichier */
 
     result->file = build_menu_file();
@@ -282,9 +278,13 @@ GEditorItem *g_menu_bar_new(GObject *ref)
 
 static void change_menubar_current_content(GMenuBar *bar, GLoadedContent *old, GLoadedContent *new)
 {
-    rebuild_menu_view_for_content(bar->view, new);
+    GObject *ref;                           /* Espace de référencements    */
+
+    ref = get_global_ref();
+
+    rebuild_menu_view_for_content(bar->view, ref, new);
 
-    update_access_for_content_in_menu_binary(new);
+    update_access_for_content_in_menu_binary(ref, new);
 
 }
 
@@ -305,13 +305,17 @@ static void change_menubar_current_content(GMenuBar *bar, GLoadedContent *old, G
 
 static void change_menubar_current_view(GMenuBar *bar, GLoadedPanel *old, GLoadedPanel *new)
 {
-    update_access_for_view_in_menu_edition(new);
+    GObject *ref;                           /* Espace de référencements    */
 
-    rebuild_menu_view_for_view(bar->view, new);
+    ref = get_global_ref();
 
-    update_access_for_view_in_menu_view(new);
+    update_access_for_view_in_menu_edition(ref, new);
 
-    update_access_for_view_in_menu_binary(new);
+    rebuild_menu_view_for_view(bar->view, ref, new);
+
+    update_access_for_view_in_menu_view(ref, new);
+
+    update_access_for_view_in_menu_binary(ref, new);
 
 }
 
@@ -332,7 +336,11 @@ static void change_menubar_current_view(GMenuBar *bar, GLoadedPanel *old, GLoade
 
 static void track_caret_address_for_menu_bar(GMenuBar *bar, GLoadedPanel *panel, const GLineCursor *cursor)
 {
-    update_access_for_cursor_in_menu_edition(panel, cursor);
+    GObject *ref;                           /* Espace de référencements    */
+
+    ref = get_global_ref();
+
+    update_access_for_cursor_in_menu_edition(ref, panel, cursor);
 
 }
 
diff --git a/src/gui/menus/options.c b/src/gui/menus/options.c
index 3702d42..065f4f5 100644
--- a/src/gui/menus/options.c
+++ b/src/gui/menus/options.c
@@ -29,6 +29,7 @@
 
 
 #include "../editem-int.h"
+#include "../core/global.h"
 #include "../dialogs/identity.h"
 #include "../dialogs/preferences.h"
 #include "../../gtkext/easygtk.h"
@@ -36,10 +37,10 @@
 
 
 /* Réagit au menu "Options -> Préférences". */
-static void mcb_options_preferences(GtkMenuItem *, GMenuBar *);
+static void mcb_options_preferences(GtkMenuItem *, gpointer);
 
 /* Réagit au menu "Options -> Identité". */
-static void mcb_options_identity(GtkMenuItem *, GMenuBar *);
+static void mcb_options_identity(GtkMenuItem *, gpointer);
 
 
 
@@ -68,11 +69,11 @@ GtkWidget *build_menu_options(GObject *ref, GMenuBar *bar)
     menubar = qck_create_menu(GTK_MENU_ITEM(result));
 
     submenuitem = qck_create_menu_item(ref, "mnu_options_preferences", _("Preferences"),
-                                       G_CALLBACK(mcb_options_preferences), bar);
+                                       G_CALLBACK(mcb_options_preferences), NULL);
     gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
 
     submenuitem = qck_create_menu_item(ref, "mnu_options_identity", _("Identity"),
-                                       G_CALLBACK(mcb_options_identity), bar);
+                                       G_CALLBACK(mcb_options_identity), NULL);
     gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
 
     return result;
@@ -83,7 +84,7 @@ GtkWidget *build_menu_options(GObject *ref, 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 au menu "Options -> Préférences".                     *
 *                                                                             *
@@ -93,15 +94,15 @@ GtkWidget *build_menu_options(GObject *ref, GMenuBar *bar)
 *                                                                             *
 ******************************************************************************/
 
-static void mcb_options_preferences(GtkMenuItem *menuitem, GMenuBar *bar)
+static void mcb_options_preferences(GtkMenuItem *menuitem, gpointer unused)
 {
-    GObject *ref;                           /* Espace de référencements    */
+    GtkWindow *editor;                      /* Fenêtre graphique principale*/
     GtkBuilder *builder;                    /* Constructeur utilisé        */
     GtkWidget *dialog;                      /* Boîte de dialogue à montrer */
 
-    ref = g_editor_item_get_global_ref(G_EDITOR_ITEM(bar));
+    editor = get_editor_window();
 
-    dialog = create_preferences_dialog(GTK_WINDOW(ref), &builder);
+    dialog = create_preferences_dialog(editor, &builder);
 
     gtk_dialog_run(GTK_DIALOG(dialog));
 
@@ -109,13 +110,15 @@ static void mcb_options_preferences(GtkMenuItem *menuitem, GMenuBar *bar)
 
     g_object_unref(G_OBJECT(builder));
 
+    g_object_unref(G_OBJECT(editor));
+
 }
 
 
 /******************************************************************************
 *                                                                             *
 *  Paramètres  : menuitem = élément de menu sélectionné.                      *
-*                bar      = barre de menu parente.                            *
+*                unused   = adresse non utilisée ici.                         *
 *                                                                             *
 *  Description : Réagit au menu "Options -> Identité".                        *
 *                                                                             *
@@ -125,15 +128,15 @@ static void mcb_options_preferences(GtkMenuItem *menuitem, GMenuBar *bar)
 *                                                                             *
 ******************************************************************************/
 
-static void mcb_options_identity(GtkMenuItem *menuitem, GMenuBar *bar)
+static void mcb_options_identity(GtkMenuItem *menuitem, gpointer unused)
 {
-    GObject *ref;                           /* Espace de référencements    */
+    GtkWindow *editor;                      /* Fenêtre graphique principale*/
     GtkBuilder *builder;                    /* Constructeur utilisé        */
     GtkWidget *dialog;                      /* Boîte de dialogue à montrer */
 
-    ref = g_editor_item_get_global_ref(G_EDITOR_ITEM(bar));
+    editor = get_editor_window();
 
-    dialog = create_identity_dialog(GTK_WINDOW(ref), &builder);
+    dialog = create_identity_dialog(editor, &builder);
 
     gtk_dialog_run(GTK_DIALOG(dialog));
 
@@ -141,4 +144,6 @@ static void mcb_options_identity(GtkMenuItem *menuitem, GMenuBar *bar)
 
     g_object_unref(G_OBJECT(builder));
 
+    g_object_unref(G_OBJECT(editor));
+
 }
diff --git a/src/gui/menus/project.c b/src/gui/menus/project.c
index 459d963..76dc7e5 100644
--- a/src/gui/menus/project.c
+++ b/src/gui/menus/project.c
@@ -32,6 +32,7 @@
 
 
 #include "../editem-int.h"
+#include "../core/global.h"
 #include "../../analysis/loading.h"
 #include "../../analysis/contents/file.h"
 #include "../../core/global.h"
@@ -174,14 +175,17 @@ void update_menu_project_for_project(GtkWidget *widget, GStudyProject *project,
 
 static void mcb_project_add_binary_file(GtkMenuItem *menuitem, GMenuBar *bar)
 {
+    GtkWindow *editor;                      /* Fenêtre graphique principale*/
     GtkWidget *dialog;                      /* Boîte à afficher            */
     GStudyProject *project;                 /* Projet courant              */
     char *dir;                              /* Répertoire courant          */
     gchar *filename;                        /* Nom du fichier à intégrer   */
     GBinContent *content;                   /* Contenu binaire à charger   */
 
+    editor = get_editor_window();
+
     dialog = gtk_file_chooser_dialog_new(_("Open a binary file"),
-                                         GTK_WINDOW(G_EDITOR_ITEM(bar)->ref),
+                                         editor,
                                          GTK_FILE_CHOOSER_ACTION_OPEN,
                                          _("_Cancel"), GTK_RESPONSE_CANCEL,
                                          _("_Open"), GTK_RESPONSE_ACCEPT,
@@ -217,6 +221,8 @@ static void mcb_project_add_binary_file(GtkMenuItem *menuitem, GMenuBar *bar)
 
     gtk_widget_destroy(dialog);
 
+    g_object_unref(G_OBJECT(editor));
+
 }
 
 
diff --git a/src/gui/menus/view.c b/src/gui/menus/view.c
index 018cfbf..e8b3c93 100644
--- a/src/gui/menus/view.c
+++ b/src/gui/menus/view.c
@@ -46,7 +46,7 @@
 
 
 /* Met à jour les accès du menu "Affichage -> Basculer...". */
-static void update_switch_access_in_menu_view(void);
+static void update_switch_access_in_menu_view(GObject *);
 
 /* Réagit avec le menu "Affichage -> Panneaux latéraux -> ...". */
 static void mcb_view_change_panel_docking(GtkCheckMenuItem *, GPanelItem *);
@@ -55,10 +55,10 @@ static void mcb_view_change_panel_docking(GtkCheckMenuItem *, GPanelItem *);
 static void mcb_view_change_support(GtkRadioMenuItem *, gpointer);
 
 /* Réagit avec le menu "Affichage -> Basculer vers le suivant". */
-static void mcb_view_switch_to_next_support(GtkRadioMenuItem *, gpointer);
+static void mcb_view_switch_to_next_support(GtkRadioMenuItem *, GObject *);
 
 /* Réagit avec le menu "Affichage -> Basculer vers le précédent". */
-static void mcb_view_switch_to_prev_support(GtkRadioMenuItem *, gpointer);
+static void mcb_view_switch_to_prev_support(GtkRadioMenuItem *, GObject *);
 
 /* Accompagne la première allocation d'un panneau d'affichage. */
 static void handle_loaded_panel_first_allocation(GtkWidget *, GdkRectangle *, GLineCursor *);
@@ -73,7 +73,7 @@ static void mcb_view_zoom(GtkCheckMenuItem *, gpointer );
 static void mcb_view_display_column(GtkCheckMenuItem *, gpointer);
 
 /* Réagit avec le menu "Affichage -> Plein écran". */
-static void mcb_view_show_full_screen(GtkCheckMenuItem *, GMenuBar *);
+static void mcb_view_show_full_screen(GtkCheckMenuItem *, gpointer);
 
 
 
@@ -118,12 +118,12 @@ GtkWidget *build_menu_view(GObject *ref, GMenuBar *bar)
     /* Types de panneau de code */
 
     submenuitem = qck_create_menu_item(ref, "mnu_view_switch_to_next_support", _("Switch to next"),
-                                       G_CALLBACK(mcb_view_switch_to_next_support), NULL);
+                                       G_CALLBACK(mcb_view_switch_to_next_support), ref);
     add_accelerator_to_widget(submenuitem, "Tab");
     gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
 
     submenuitem = qck_create_menu_item(ref, "mnu_view_switch_to_prev_support", _("Switch to previous"),
-                                       G_CALLBACK(mcb_view_switch_to_prev_support), NULL);
+                                       G_CALLBACK(mcb_view_switch_to_prev_support), ref);
     add_accelerator_to_widget(submenuitem, "<Shift>Tab");
     gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
 
@@ -163,7 +163,7 @@ GtkWidget *build_menu_view(GObject *ref, GMenuBar *bar)
     /* Affichage -> Plein écran */
 
     submenuitem = qck_create_check_menu_item(NULL, NULL, _("Full screen"),
-                                             G_CALLBACK(mcb_view_show_full_screen), bar);
+                                             G_CALLBACK(mcb_view_show_full_screen), NULL);
     add_accelerator_to_widget(submenuitem, "F11");
     gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
 
@@ -175,7 +175,8 @@ GtkWidget *build_menu_view(GObject *ref, GMenuBar *bar)
 /******************************************************************************
 *                                                                             *
 *  Paramètres  : widget = menu principal à actualiser.                        *
-*                new = nouveau contenu chargé à analyser.                     *
+*                ref    = espace de référencement global.                     *
+*                new    = nouveau contenu chargé à analyser.                  *
 *                                                                             *
 *  Description : Réagit à un changement d'affichage principal de contenu.     *
 *                                                                             *
@@ -185,9 +186,8 @@ GtkWidget *build_menu_view(GObject *ref, GMenuBar *bar)
 *                                                                             *
 ******************************************************************************/
 
-void rebuild_menu_view_for_content(GtkWidget *widget, GLoadedContent *new)
+void rebuild_menu_view_for_content(GtkWidget *widget, GObject *ref, GLoadedContent *new)
 {
-    GObject *ref;                           /* Espace de références        */
     GtkWidget *menubar;                     /* Support pour éléments       */
     unsigned int i;                         /* Boucle de parcours          */
     char *key;                              /* Clef pour accès ultérieurs  */
@@ -199,8 +199,6 @@ void rebuild_menu_view_for_content(GtkWidget *widget, GLoadedContent *new)
     unsigned int count;                     /* Nombre d'itérations à mener */
     GSList *rgroup;                         /* Groupe des boutons radio    */
 
-    ref = get_global_ref();
-
     /* Retrait d'éventuels anciens menus */
 
     menubar = gtk_menu_item_get_submenu(GTK_MENU_ITEM(widget));
@@ -277,6 +275,7 @@ void rebuild_menu_view_for_content(GtkWidget *widget, GLoadedContent *new)
 /******************************************************************************
 *                                                                             *
 *  Paramètres  : widget = menu principal à actualiser.                        *
+*                ref    = espace de référencement global.                     *
 *                new    = nouvelle vue du contenu chargé analysé.             *
 *                                                                             *
 *  Description : Lance une actualisation du fait d'un changement de support.  *
@@ -287,9 +286,8 @@ void rebuild_menu_view_for_content(GtkWidget *widget, GLoadedContent *new)
 *                                                                             *
 ******************************************************************************/
 
-void rebuild_menu_view_for_view(GtkWidget *widget, GLoadedPanel *new)
+void rebuild_menu_view_for_view(GtkWidget *widget, GObject *ref, GLoadedPanel *new)
 {
-    GObject *ref;                           /* Espace de références        */
     GLoadedContent *content;                /* Contenu en cours d'analyse  */
     unsigned int index;                     /* Indice de la vue            */
     GtkWidget *menubar;                     /* Support pour éléments       */
@@ -306,8 +304,6 @@ void rebuild_menu_view_for_view(GtkWidget *widget, GLoadedPanel *new)
     size_t count;                           /* Nombre d'itérations à mener */
     bool status;                            /* Consigne d'affichage        */
 
-    ref = get_global_ref();
-
     content = get_current_content();
     assert((content == NULL && new == NULL) || (content != NULL && new != NULL));
 
@@ -425,7 +421,8 @@ void rebuild_menu_view_for_view(GtkWidget *widget, GLoadedPanel *new)
 
 /******************************************************************************
 *                                                                             *
-*  Paramètres  : new = nouvelle vue du contenu chargé analysé.                *
+*  Paramètres  : ref = espace de référencement global.                        *
+*                new = nouvelle vue du contenu chargé analysé.                *
 *                                                                             *
 *  Description : Met à jour les accès du menu "Affichage" selon le contenu.   *
 *                                                                             *
@@ -435,17 +432,14 @@ void rebuild_menu_view_for_view(GtkWidget *widget, GLoadedPanel *new)
 *                                                                             *
 ******************************************************************************/
 
-void update_access_for_view_in_menu_view(GLoadedPanel *new)
+void update_access_for_view_in_menu_view(GObject *ref, GLoadedPanel *new)
 {
-    GObject *ref;                           /* Espace de référencements    */
     gboolean access;                        /* Accès à déterminer          */
     GtkWidget *item;                        /* Elément de menu à traiter   */
 
-    ref = get_global_ref();
-
     /* Bascules */
 
-    update_switch_access_in_menu_view();
+    update_switch_access_in_menu_view(ref);
 
     /* Zooms */
 
@@ -465,7 +459,7 @@ void update_access_for_view_in_menu_view(GLoadedPanel *new)
 
 /******************************************************************************
 *                                                                             *
-*  Paramètres  : -                                                            *
+*  Paramètres  : ref = espace de référencement global.                        *
 *                                                                             *
 *  Description : Met à jour les accès du menu "Affichage -> Basculer...".     *
 *                                                                             *
@@ -475,9 +469,8 @@ void update_access_for_view_in_menu_view(GLoadedPanel *new)
 *                                                                             *
 ******************************************************************************/
 
-static void update_switch_access_in_menu_view(void)
+static void update_switch_access_in_menu_view(GObject *ref)
 {
-    GObject *ref;                           /* Espace de références        */
     GLoadedPanel *panel;                    /* Afficheur effectif de code  */
     GLoadedContent *content;                /* Contenu représenté          */
     unsigned int count;                     /* Nombre de vues possibles    */
@@ -485,8 +478,6 @@ static void update_switch_access_in_menu_view(void)
     gboolean access;                        /* Accès à déterminer          */
     GtkWidget *item;                        /* Elément de menu à traiter   */
 
-    ref = get_global_ref();
-
     panel = get_current_view();
 
     if (panel == NULL)
@@ -711,7 +702,7 @@ static void mcb_view_change_support(GtkRadioMenuItem *menuitem, gpointer unused)
 /******************************************************************************
 *                                                                             *
 *  Paramètres  : menuitem = élément de menu ayant basculé.                    *
-*                unused   = adresse non utilisée ici.                         *
+*                ref      = espace de référencement global.                   *
 *                                                                             *
 *  Description : Réagit avec le menu "Affichage -> Basculer vers le suivant". *
 *                                                                             *
@@ -721,7 +712,7 @@ static void mcb_view_change_support(GtkRadioMenuItem *menuitem, gpointer unused)
 *                                                                             *
 ******************************************************************************/
 
-static void mcb_view_switch_to_next_support(GtkRadioMenuItem *menuitem, gpointer unused)
+static void mcb_view_switch_to_next_support(GtkRadioMenuItem *menuitem, GObject *ref)
 {
     GLoadedPanel *panel;                    /* Afficheur effectif de code  */
     GLoadedContent *content;                /* Contenu représenté          */
@@ -746,7 +737,7 @@ static void mcb_view_switch_to_next_support(GtkRadioMenuItem *menuitem, gpointer
     g_object_unref(G_OBJECT(content));
     g_object_unref(G_OBJECT(panel));
 
-    update_switch_access_in_menu_view();
+    update_switch_access_in_menu_view(ref);
 
 }
 
@@ -754,7 +745,7 @@ static void mcb_view_switch_to_next_support(GtkRadioMenuItem *menuitem, gpointer
 /******************************************************************************
 *                                                                             *
 *  Paramètres  : menuitem = élément de menu ayant basculé.                    *
-*                unused   = adresse non utilisée ici.                         *
+*                ref      = espace de référencement global.                   *
 *                                                                             *
 *  Description : Réagit avec le menu "Affichage -> Basculer ... précédent".   *
 *                                                                             *
@@ -764,7 +755,7 @@ static void mcb_view_switch_to_next_support(GtkRadioMenuItem *menuitem, gpointer
 *                                                                             *
 ******************************************************************************/
 
-static void mcb_view_switch_to_prev_support(GtkRadioMenuItem *menuitem, gpointer unused)
+static void mcb_view_switch_to_prev_support(GtkRadioMenuItem *menuitem, GObject *ref)
 {
     GLoadedPanel *panel;                    /* Afficheur effectif de code  */
     GLoadedContent *content;                /* Contenu représenté          */
@@ -782,7 +773,7 @@ static void mcb_view_switch_to_prev_support(GtkRadioMenuItem *menuitem, gpointer
     g_object_unref(G_OBJECT(content));
     g_object_unref(G_OBJECT(panel));
 
-    update_switch_access_in_menu_view();
+    update_switch_access_in_menu_view(ref);
 
 }
 
@@ -974,7 +965,7 @@ static void mcb_view_display_column(GtkCheckMenuItem *menuitem, gpointer unused)
 /******************************************************************************
 *                                                                             *
 *  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 "Affichage -> Plein écran".              *
 *                                                                             *
@@ -984,18 +975,20 @@ static void mcb_view_display_column(GtkCheckMenuItem *menuitem, gpointer unused)
 *                                                                             *
 ******************************************************************************/
 
-static void mcb_view_show_full_screen(GtkCheckMenuItem *menuitem, GMenuBar *bar)
+static void mcb_view_show_full_screen(GtkCheckMenuItem *menuitem, gpointer unused)
 {
-    GObject *ref;                           /* Espace de référencements    */
+    GtkWindow *editor;                      /* Fenêtre graphique principale*/
     gboolean active;                        /* Etat de sélection du menu   */
 
-    ref = g_editor_item_get_global_ref(G_EDITOR_ITEM(bar));
+    editor = get_editor_window();
 
     active = gtk_check_menu_item_get_active(menuitem);
 
     if (active)
-        gtk_window_fullscreen(GTK_WINDOW(ref));
+        gtk_window_fullscreen(editor);
     else
-        gtk_window_unfullscreen(GTK_WINDOW(ref));
+        gtk_window_unfullscreen(editor);
+
+    g_object_unref(G_OBJECT(editor));
 
 }
diff --git a/src/gui/menus/view.h b/src/gui/menus/view.h
index d3d70ab..d177c37 100644
--- a/src/gui/menus/view.h
+++ b/src/gui/menus/view.h
@@ -38,13 +38,13 @@
 GtkWidget *build_menu_view(GObject *, GMenuBar *);
 
 /* Réagit à un changement d'affichage principal de contenu. */
-void rebuild_menu_view_for_content(GtkWidget *, GLoadedContent *);
+void rebuild_menu_view_for_content(GtkWidget *, GObject *, GLoadedContent *);
 
 /* Lance une actualisation du fait d'un changement de support. */
-void rebuild_menu_view_for_view(GtkWidget *, GLoadedPanel *);
+void rebuild_menu_view_for_view(GtkWidget *, GObject *, GLoadedPanel *);
 
 /* Met à jour les accès du menu "Affichage" selon le contenu. */
-void update_access_for_view_in_menu_view(GLoadedPanel *);
+void update_access_for_view_in_menu_view(GObject *, GLoadedPanel *);
 
 /* Réagit avec le menu "Affichage -> Panneaux latéraux". */
 void mcb_view_update_side_panels_list(GtkMenuItem *, GMenuBar *);
diff --git a/src/gui/status.c b/src/gui/status.c
index 645028e..f692e0d 100644
--- a/src/gui/status.c
+++ b/src/gui/status.c
@@ -177,7 +177,7 @@ static void g_status_info_finalize(GStatusInfo *info)
 
 /******************************************************************************
 *                                                                             *
-*  Paramètres  : ref = espace de référencement global.                        *
+*  Paramètres  : -                                                            *
 *                                                                             *
 *  Description : Compose la barre de statut principale.                       *
 *                                                                             *
@@ -187,7 +187,7 @@ static void g_status_info_finalize(GStatusInfo *info)
 *                                                                             *
 ******************************************************************************/
 
-GEditorItem *g_status_info_new(GObject *ref)
+GEditorItem *g_status_info_new(void)
 {
     GStatusInfo *result;                    /* Structure à retourner       */
     GEditorItem *item;                      /* Autre version de l'élément  */
@@ -196,9 +196,6 @@ GEditorItem *g_status_info_new(GObject *ref)
 
     item = G_EDITOR_ITEM(result);
 
-    g_object_ref(ref);
-    item->ref = ref;
-
     set_global_status(GTK_STATUS_STACK(item->widget));
 
     return G_EDITOR_ITEM(result);
diff --git a/src/gui/status.h b/src/gui/status.h
index 97e12c6..11c1ee6 100644
--- a/src/gui/status.h
+++ b/src/gui/status.h
@@ -49,7 +49,7 @@ typedef struct _GStatusInfoClass GStatusInfoClass;
 GType g_status_info_get_type(void);
 
 /* Compose la barre de statut principale. */
-GEditorItem *g_status_info_new(GObject *);
+GEditorItem *g_status_info_new(void);
 
 
 
diff --git a/src/gui/tb/tbitem.c b/src/gui/tb/tbitem.c
index 375fee7..22568ec 100644
--- a/src/gui/tb/tbitem.c
+++ b/src/gui/tb/tbitem.c
@@ -102,11 +102,6 @@ GEditorItem *g_toolbar_item_setup(GToolbarItem *tbitem, GObject *ref, const char
 
     result = G_EDITOR_ITEM(tbitem);
 
-    /* Initialisation générique */
-
-    g_object_ref(ref);
-    result->ref = ref;
-
     result->name = name;
 
     /* Intégration dans la barre */
-- 
cgit v0.11.2-87-g4458