From 359055e28bcd195fb03fd0deb1a30e5a04d5ce58 Mon Sep 17 00:00:00 2001
From: Cyrille Bagard <nocbos@gmail.com>
Date: Wed, 26 Jul 2017 19:19:09 +0200
Subject: Transformed the remaining nested functions dealing with menus.

---
 ChangeLog            |   6 +++
 src/gtkext/easygtk.c | 102 +++++++++++++++++++++++++++++++++++++++------------
 src/gui/editor.c     |  49 +++++++++++++++++--------
 3 files changed, 118 insertions(+), 39 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index f05fa05..840d83b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 17-07-26  Cyrille Bagard <nocbos@gmail.com>
 
+	* src/gtkext/easygtk.c:
+	* src/gui/editor.c:
+	Transform the remaining nested functions dealing with menus.
+
+17-07-26  Cyrille Bagard <nocbos@gmail.com>
+
 	* src/arch/dalvik/operands/pool.c:
 	Add a missing g_object_ref() before g_object_unref().
 
diff --git a/src/gtkext/easygtk.c b/src/gtkext/easygtk.c
index 5d54771..4543934 100644
--- a/src/gtkext/easygtk.c
+++ b/src/gtkext/easygtk.c
@@ -34,6 +34,15 @@
 /* Termine la construction d'un composant 'GtkButton'. */
 static void _finish_button_with_img(GtkWidget *, GObject *, const char *, GtkWidget *, const char *);
 
+/* Encadre certains raccourcis actionnés sur un menu. */
+static gboolean handle_escape_on_menu(GtkWidget *, GdkEventKey *, GtkMenuItem *);
+
+/* Assure que le menu parent est sélectionné comme attendu. */
+static void show_parent_selection(GtkWidget *, GtkMenuItem *);
+
+/* Détermine si un élément de menu peut être actionné. */
+static gboolean enable_accel_all_the_time(GtkWidget *, guint, gpointer);
+
 
 
 /******************************************************************************
@@ -819,11 +828,58 @@ GtkWidget *qck_create_combobox_with_entry(GObject *object, const char *name, GCa
 
 /******************************************************************************
 *                                                                             *
+*  Paramètres  : menu  = composant actif pour la réception des touches.       *
+*                event = informations liées à l'événement.                    *
+*                item  = menu parent à manipuler au besoin.                   *
+*                                                                             *
+*  Description : Encadre certains raccourcis actionnés sur un menu.           *
+*                                                                             *
+*  Retour      : FALSE afin de poursuivre la propagation de l'événement.      *
+*                                                                             *
+*  Remarques   : -                                                            *
+*                                                                             *
+******************************************************************************/
+
+static gboolean handle_escape_on_menu(GtkWidget *menu, GdkEventKey *event, GtkMenuItem *item)
+{
+    if (event->keyval == GDK_KEY_Escape)
+    {
+        gtk_widget_hide(menu);
+        gtk_menu_item_deselect(item);
+    }
+
+    return FALSE;
+
+}
+
+
+/******************************************************************************
+*                                                                             *
+*  Paramètres  : widget = support de menu principal.                          *
+*                item   = élément de menu accueillant un sous-menu.           *
+*                                                                             *
+*  Description : Assure que le menu parent est sélectionné comme attendu.     *
+*                                                                             *
+*  Retour      : -                                                            *
+*                                                                             *
+*  Remarques   : -                                                            *
+*                                                                             *
+******************************************************************************/
+
+static void show_parent_selection(GtkWidget *widget, GtkMenuItem *item)
+{
+    gtk_menu_item_select(item);
+
+}
+
+
+/******************************************************************************
+*                                                                             *
 *  Paramètres  : item = élément de menu devant recevoir un sous-menu.         *
 *                                                                             *
 *  Description : Met en place un support de menu 'GtkMenu'.                   *
 *                                                                             *
-*  Retour      : Rceptacle pour sous-éléments de menu.                        *
+*  Retour      : Réceptacle pour sous-éléments de menu.                       *
 *                                                                             *
 *  Remarques   : -                                                            *
 *                                                                             *
@@ -839,25 +895,7 @@ GtkWidget *qck_create_menu(GtkMenuItem *item)
     {
         gtk_menu_item_set_submenu(item, result);
 
-        gboolean handle_escape_on_menu(GtkWidget *menu, GdkEventKey *event, GtkMenuItem *item)
-        {
-            if (event->keyval == GDK_KEY_Escape)
-            {
-                gtk_widget_hide(menu);
-                gtk_menu_item_deselect(item);
-            }
-
-            return FALSE;
-
-        }
-
         g_signal_connect(result, "key-press-event", G_CALLBACK(handle_escape_on_menu), item);
-
-        void show_parent_selection(GtkWidget *widget, GtkMenuItem *item)
-        {
-            gtk_menu_item_select(item);
-        }
-
         g_signal_connect(result, "show", G_CALLBACK(show_parent_selection), item);
 
     }
@@ -984,6 +1022,27 @@ GtkWidget *qck_create_radio_menu_item(GObject *object, const char *name, GSList
 
 /******************************************************************************
 *                                                                             *
+*  Paramètres  : widget    = composant graphique à analyser.                  *
+*                signal_id = identifiant de signal.                           *
+*                unused    = adresse non utilisée ici.                        *
+*                                                                             *
+*  Description : Détermine si un élément de menu peut être actionné.          *
+*                                                                             *
+*  Retour      : TRUE si l'élément de menu est accessible.                    *
+*                                                                             *
+*  Remarques   : -                                                            *
+*                                                                             *
+******************************************************************************/
+
+static gboolean enable_accel_all_the_time(GtkWidget *widget, guint signal_id, gpointer unused)
+{
+    return gtk_widget_is_sensitive(widget);
+
+}
+
+
+/******************************************************************************
+*                                                                             *
 *  Paramètres  : item        = élément d'un menu à mettre à jour.             *
 *                accelerator = description sous forme de chaîne de caractères.*
 *                group       = groupe d'appartenance du raccourci.            *
@@ -1003,11 +1062,6 @@ void add_accelerator_to_menu_item(GtkWidget *item, const char *accelerator, GtkA
 
     gtk_accelerator_parse(accelerator, &key, &mods);
 
-    gboolean enable_accel_all_the_time(GtkWidget *widget, guint signal_id, gpointer unused)
-    {
-        return gtk_widget_is_sensitive(widget);
-    }
-
     g_signal_connect(item, "can-activate-accel", G_CALLBACK(enable_accel_all_the_time), NULL);
 
     gtk_widget_add_accelerator(item, "activate", group,
diff --git a/src/gui/editor.c b/src/gui/editor.c
index b856971..5e8717a 100644
--- a/src/gui/editor.c
+++ b/src/gui/editor.c
@@ -76,6 +76,9 @@ static void on_destroy_editor(GtkWidget *, GObject *);
 /* Réagit à un changement de focus pour l'éditeur. */
 static gboolean on_focus_out(GtkWidget *, GdkEventFocus *, GObject *);
 
+/* Encadre certains raccourcis actionnés sur un menu. */
+static gboolean track_espace_on_main_submenu(GtkWidget *, GdkEventKey *, GtkWidget *);
+
 /* Permet la disparition de la barre de menus avec le clavier. */
 static void track_root_menubars(GtkContainer *, bool);
 
@@ -500,34 +503,50 @@ static gboolean on_focus_out(GtkWidget *widget, GdkEventFocus *event, GObject *r
 
 /******************************************************************************
 *                                                                             *
-*  Paramètres  : menubar = barre de menu principale à traiter.                *
-*                set     = indique si la surveillance est à activer ou non.   *
+*  Paramètres  : menu  = composant actif pour la réception des touches.       *
+*                event = informations liées à l'événement.                    *
+*                item  = menu parent à manipuler au besoin.                   *
 *                                                                             *
-*  Description : Permet la disparition de la barre de menus avec le clavier.  *
+*  Description : Encadre certains raccourcis actionnés sur un menu.           *
 *                                                                             *
-*  Retour      : -                                                            *
+*  Retour      : FALSE afin de poursuivre la propagation de l'événement.      *
 *                                                                             *
 *  Remarques   : -                                                            *
 *                                                                             *
 ******************************************************************************/
 
-static void track_root_menubars(GtkContainer *menubar, bool set)
+static gboolean track_espace_on_main_submenu(GtkWidget *menu, GdkEventKey *event, GtkWidget *item)
 {
-    gboolean track_espace_on_main_submenu(GtkWidget *menu, GdkEventKey *event, GtkWidget *item)
+    GtkWidget *mbar;                        /* Barre de menus principale   */
+
+    if (event->keyval == GDK_KEY_Escape)
     {
-        GtkWidget *mbar;                    /* Barre de menus principale   */
+        mbar = gtk_widget_get_parent(item);
+        track_root_menubars(GTK_CONTAINER(mbar), false);
+        gtk_widget_hide(mbar);
+    }
 
-        if (event->keyval == GDK_KEY_Escape)
-        {
-            mbar = gtk_widget_get_parent(item);
-            track_root_menubars(GTK_CONTAINER(mbar), false);
-            gtk_widget_hide(mbar);
-        }
+    return FALSE;
+
+}
 
-        return FALSE;
 
-    }
 
+/******************************************************************************
+*                                                                             *
+*  Paramètres  : menubar = barre de menu principale à traiter.                *
+*                set     = indique si la surveillance est à activer ou non.   *
+*                                                                             *
+*  Description : Permet la disparition de la barre de menus avec le clavier.  *
+*                                                                             *
+*  Retour      : -                                                            *
+*                                                                             *
+*  Remarques   : -                                                            *
+*                                                                             *
+******************************************************************************/
+
+static void track_root_menubars(GtkContainer *menubar, bool set)
+{
     void browse_all_main_items(GtkWidget *item, bool *track)
     {
         GtkWidget *menu;                    /* Menu à traiter              */
-- 
cgit v0.11.2-87-g4458