Как я могу отключить ускоритель GTK в C? - PullRequest
0 голосов
/ 05 марта 2019

Я модифицирую существующую программу, поэтому я не реализовал ускорители, но я нашел способ их получить, вот мой код:

GList* accel_groups;
accel_groups = gtk_accel_groups_from_object(G_OBJECT(toplevel_window));

printf("%d\n", g_list_length(accel_groups));

//the length of the list is 1, that's why I don't show you a cicle there, but just get the first element
GtkAccelGroup* accel_group;
accel_group = g_list_nth_data(accel_groups, 0);

printf("%d\n", gtk_accel_group_disconnect(GTK_ACCEL_GROUP(accel_group), NULL));

accel_groups = gtk_accel_groups_from_object(G_OBJECT(toplevel_window));
printf("%d\n", g_list_length(accel_groups));

Сначала printf печатает 1,поэтому у меня есть один GtkAccelGroup в окне.Второй printf печатает 1 и в соответствии с https://developer.gnome.org/gtk2/stable/gtk2-Keyboard-Accelerators.html#gtk-accel-group-disconnect это означает, что ускоритель был найден и деактивирован.Третий printf печатает снова 1, поэтому у окна все еще есть один GtkAccelGroup.

Есть ли способ удалить GtkAccelGroup из window?Причина с моим кодом, горячие клавиши все еще работают после gtk_accel_group_disconnect

...