diff options
Diffstat (limited to 'src/gtkext/easygtk.c')
-rw-r--r-- | src/gtkext/easygtk.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/gtkext/easygtk.c b/src/gtkext/easygtk.c index 706505b..b931ff0 100644 --- a/src/gtkext/easygtk.c +++ b/src/gtkext/easygtk.c @@ -819,6 +819,56 @@ GtkWidget *qck_create_combobox_with_entry(GObject *object, const char *name, GCa /****************************************************************************** * * +* 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. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GtkWidget *qck_create_menu(GtkMenuItem *item) +{ + GtkWidget *result; /* Composant à retourner */ + + result = gtk_menu_new(); + + if (item != NULL) + { + 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); + + } + + return result; + +} + + +/****************************************************************************** +* * * Paramètres : object = espace dédié à l'inscription de références. * * name = nom à donner au nouveau composant. * * caption = intitulé du menu à créer. * @@ -953,6 +1003,13 @@ 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, key, mods, GTK_ACCEL_VISIBLE); |