diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/gtkext/easygtk.c | 102 | ||||
| -rw-r--r-- | src/gui/editor.c | 49 | 
2 files changed, 112 insertions, 39 deletions
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              */  | 
