Я использую некоторые предопределенные ускорители, связанные с некоторыми горячими клавишами. Можно ли временно отключить их? Я не хочу менять горячие клавиши, чтобы не путать пользователей. Ускорители активируются при вводе в поле со списком, что действительно неприемлемо.
Как отключить ускорители при вводе текста в GTK +
Ответ 1
Насколько я знаю, вы не можете их отключить. Они получат любой ключевой штрих, который не потребляется сфокусированным окном.
Ответ 2
Я снова спросил об этом в списке рассылки GTK +, и у людей было два предложения, которые пришли с реалистичными реализациями из собственных проектов ( не связаны здесь, но вы можете проверить поток, если хотите их увидеть):
- Перехватывайте и обрабатывайте все нажатия клавиш, тем самым переопределяя нормальный механизм GTK + и позволяя делать исключения для ваших ускорителей.
- Список ускорителей, которые вы удаляете вручную, когда виджет редактирования текста получает фокус, затем добавляйте их снова, когда виджет теряет фокус. В GTK + 3 это выполняется с помощью
gtk_application_set_accels_for_action
.
В связанном потоке вы можете найти пример кода для обоих подходов. Второй подход даже имеет пример в GTK + 2 и один в GTK + 3.