La rumeur dit que “gtk-enable-mnemonics” est obsolète depuis la version 3.10 et je ne sais pas du tout comment obtenir que mon application affiche les mnémoniques.
Ils ne s’afficheront que si j’appuie sur la touche alt
.
S’il vous plaît voir ici:
J’ai essayé tout ce qui est suggéré dans cet article en ce qui concerne settings.ini, en inversant le bool:
En relation:
Pour “désactiver” les mnémoniques de Nautilus 3.10.1 sur Ubuntu 14.04 qui utilise GTK3:
/home/YOURUSERNAME/.config/gtk-3.0/settings.ini
[Settings]
gtk-enable-mnemonics = 0
Sources:
ps Notez que la documentation GTK indique que vous devriez avoir une variable d’environnement appelée XDG_CONFIG_HOME
mais que je n’en ai pas. J’avais un dossier ~/.config/gtk-3.0
existant et il semble qu’il le recherche par défaut, sans la variable d’environnement.
On dirait que GTK + -3 a perdu le paramètre “gtk-auto-mnemonics” après la version 3.8 (à partir de la version 3.10).
Le correctif suivant pour 3.14.4 devrait réactiver “gtk-auto-mnemonics”. Cela fonctionnera probablement aussi avec les autres versions de GTK + -3 comme 3.16. Après la compilation, vous aurez seulement besoin de ces fichiers (les deux premiers sont des liens symboliques):
libgtk-3.so -> libgtk-3.so.0.1400.4 libgtk-3.so.0 -> libgtk-3.so.0.1400.4 libgtk-3.so.0.1400.4
http://ftp.gnome.org/pub/gnome/sources/gtk+/3.14/gtk+-3.14.4.tar.xz
Vous pouvez facilement commencer à utiliser les éléments compilés par ceci (remplacez lib64
par lib
si nécessaire):
LD_LIBRARY_PATH=/folder/where/you/installed/lib64 file-roller
–
Je ne sais pas pourquoi, mais il semble que les développeurs de GTK + sont devenus vraiment géniaux en supprimant du code qui fournissait des fonctionnalités utiles comme celle-ci … !!!
Si un développeur de GTK + lit ceci: Comment ces lignes de code ont-elles blessé quelqu’un ou pourquoi ont-elles été supprimées ???
Si quelqu’un est intéressé par le commit original:
On dirait que les personnes de GTK + ont eu une exécution de suppression de fonctionnalités à ce moment-là:
==========
diff -ur gtk+-3.14.4.old/gtk/gtklabel.c gtk+-3.14.4.new/gtk/gtklabel.c --- gtk+-3.14.4.old/gtk/gtklabel.c 2014-10-21 16:20:55.000000000 +0200 +++ gtk+-3.14.4.new/gtk/gtklabel.c 2015-05-06 23:01:45.447209817 +0200 @@ -2561,11 +2561,12 @@ if (with_uline) { - gboolean enable_mnemonics = TRUE; - gboolean auto_mnemonics = TRUE; + gboolean enable_mnemonics; + gboolean auto_mnemonics; g_object_get (gtk_widget_get_settings (GTK_WIDGET (label)), "gtk-enable-mnemonics", &enable_mnemonics, + "gtk-auto-mnemonics", &auto_mnemonics, NULL); if (!(enable_mnemonics && priv->mnemonics_visible && @@ -2775,8 +2776,8 @@ { GtkLabelPrivate *priv = label->priv; PangoAttrList *attrs; - gboolean enable_mnemonics = TRUE; - gboolean auto_mnemonics = TRUE; + gboolean enable_mnemonics; + gboolean auto_mnemonics; if (priv->pattern_set) return; @@ -2784,8 +2785,9 @@ if (is_mnemonic) { g_object_get (gtk_widget_get_settings (GTK_WIDGET (label)), - "gtk-enable-mnemonics", &enable_mnemonics, - NULL); + "gtk-enable-mnemonics", &enable_mnemonics, + "gtk-auto-mnemonics", &auto_mnemonics, + NULL); if (enable_mnemonics && priv->mnemonics_visible && pattern && (!auto_mnemonics || diff -ur gtk+-3.14.4.old/gtk/gtkmain.c gtk+-3.14.4.new/gtk/gtkmain.c --- gtk+-3.14.4.old/gtk/gtkmain.c 2014-10-21 16:20:55.000000000 +0200 +++ gtk+-3.14.4.new/gtk/gtkmain.c 2015-05-06 22:47:35.375311109 +0200 @@ -1717,18 +1717,26 @@ ((event->key.state & (gtk_accelerator_get_default_mod_mask ()) & ~(GDK_RELEASE_MASK|GDK_MOD1_MASK)) == 0) && !GTK_IS_MENU_SHELL (grab_widget)) { - gboolean mnemonics_visible; - GtkWidget *window; + gboolean auto_mnemonics; - mnemonics_visible = (event->type == GDK_KEY_PRESS); + g_object_get (gtk_widget_get_settings (grab_widget), + "gtk-auto-mnemonics", &auto_mnemonics, NULL); - window = gtk_widget_get_toplevel (grab_widget); - if (GTK_IS_WINDOW (window)) + if (auto_mnemonics) { - if (mnemonics_visible) - _gtk_window_schedule_mnemonics_visible (GTK_WINDOW (window)); - else - gtk_window_set_mnemonics_visible (GTK_WINDOW (window), FALSE); + gboolean mnemonics_visible; + GtkWidget *window; + + mnemonics_visible = (event->type == GDK_KEY_PRESS); + + window = gtk_widget_get_toplevel (grab_widget); + if (GTK_IS_WINDOW (window)) + { + if (mnemonics_visible) + _gtk_window_schedule_mnemonics_visible (GTK_WINDOW (window)); + else + gtk_window_set_mnemonics_visible (GTK_WINDOW (window), FALSE); + } } } /* else fall through */ diff -ur gtk+-3.14.4.old/gtk/gtkmenushell.c gtk+-3.14.4.new/gtk/gtkmenushell.c --- gtk+-3.14.4.old/gtk/gtkmenushell.c 2014-08-15 16:38:05.000000000 +0200 +++ gtk+-3.14.4.new/gtk/gtkmenushell.c 2015-05-06 22:53:03.442086931 +0200 @@ -898,9 +898,17 @@ _gtk_menu_shell_update_mnemonics (GtkMenuShell *menu_shell) { GtkMenuShell *target; + gboolean auto_mnemonics; gboolean found; gboolean mnemonics_visible; + g_object_get (gtk_widget_get_settings (GTK_WIDGET (menu_shell)), + "gtk-auto-mnemonics", &auto_mnemonics, + NULL); + + if (!auto_mnemonics) + return; + target = menu_shell; found = FALSE; while (target) diff -ur gtk+-3.14.4.old/gtk/gtkwindow.c gtk+-3.14.4.new/gtk/gtkwindow.c --- gtk+-3.14.4.old/gtk/gtkwindow.c 2014-10-21 16:20:55.000000000 +0200 +++ gtk+-3.14.4.new/gtk/gtkwindow.c 2015-05-06 22:59:47.780956630 +0200 @@ -5878,6 +5878,8 @@ GtkWindow *window = GTK_WINDOW (widget); GtkWindowPrivate *priv = window->priv; GdkWindow *gdk_window; + gboolean auto_mnemonics; + GtkPolicyType visible_focus; GList *link; if (!gtk_widget_is_toplevel (widget)) @@ -5966,10 +5968,15 @@ } } - /* if mnemonics visible is not already set + /* if auto-mnemonics is enabled and mnemonics visible is not already set * (as in the case of popup menus), then hide mnemonics initially */ - if (!priv->mnemonics_visible_set) + g_object_get (gtk_widget_get_settings (widget), + "gtk-auto-mnemonics", &auto_mnemonics, + "gtk-visible-focus", &visible_focus, + NULL); + + if (auto_mnemonics && !priv->mnemonics_visible_set) gtk_window_set_mnemonics_visible (window, FALSE); /* inherit from transient parent, so that a dialog that is @@ -7834,6 +7841,7 @@ GdkEventFocus *event) { GtkWindow *window = GTK_WINDOW (widget); + gboolean auto_mnemonics; /* It appears spurious focus in events can occur when * the window is hidden. So we'll just check to see if @@ -7845,7 +7853,9 @@ _gtk_window_set_has_toplevel_focus (window, TRUE); _gtk_window_set_is_active (window, TRUE); - if (gtk_window_has_mnemonic_modifier_pressed (window)) + g_object_get (gtk_widget_get_settings (widget), + "gtk-auto-mnemonics", &auto_mnemonics, NULL); + if (auto_mnemonics && gtk_window_has_mnemonic_modifier_pressed (window)) _gtk_window_schedule_mnemonics_visible (window); } @@ -7857,12 +7867,16 @@ GdkEventFocus *event) { GtkWindow *window = GTK_WINDOW (widget); + gboolean auto_mnemonics; _gtk_window_set_has_toplevel_focus (window, FALSE); _gtk_window_set_is_active (window, FALSE); /* set the mnemonic-visible property to false */ - gtk_window_set_mnemonics_visible (window, FALSE); + g_object_get (gtk_widget_get_settings (widget), + "gtk-auto-mnemonics", &auto_mnemonics, NULL); + if (auto_mnemonics) + gtk_window_set_mnemonics_visible (window, FALSE); return FALSE; }
Je pense que je changeais le mauvais thème. Oops.
Les étapes ont suivi.
https://stackoverflow.com/a/24095212/2026508
Changer de: gtk-auto-mnemonics = 0
<---- désactivé
Changer en: gtk-auto-mnemonics = 1
<---- Activé
Dans GTK3, changez le /usr/share/themes/CURRENT_THEME_NAME/gtk3.0/settings.ini
settings.ini: /usr/share/themes/CURRENT_THEME_NAME/gtk3.0/settings.ini
Dans GTK2, modification dans gtkrc: /usr/share/themes/CURRENT_THEME_NAME/gtk2.0/gtkrc
Mais assurez-vous que c’est le bon thème / actuel.