如何在C中禁用gtk加速器?

时间:2019-03-05 10:07:09

标签: c gtk acceleratorkey

我正在修改现有程序,因此没有实现加速器,但是我找到了一种获取加速器的方法,这是我的代码:

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

之后仍然有效

0 个答案:

没有答案