From 359055e28bcd195fb03fd0deb1a30e5a04d5ce58 Mon Sep 17 00:00:00 2001 From: Cyrille Bagard 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 + * src/gtkext/easygtk.c: + * src/gui/editor.c: + Transform the remaining nested functions dealing with menus. + +17-07-26 Cyrille Bagard + * 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