Подтвердить что ты не робот

Как отключить ускорители при вводе текста в GTK +

Я использую некоторые предопределенные ускорители, связанные с некоторыми горячими клавишами. Можно ли временно отключить их? Я не хочу менять горячие клавиши, чтобы не путать пользователей. Ускорители активируются при вводе в поле со списком, что действительно неприемлемо.

4b9b3361

Ответ 1

Насколько я знаю, вы не можете их отключить. Они получат любой ключевой штрих, который не потребляется сфокусированным окном.

Ответ 2

Я снова спросил об этом в списке рассылки GTK +, и у людей было два предложения, которые пришли с реалистичными реализациями из собственных проектов ( не связаны здесь, но вы можете проверить поток, если хотите их увидеть):

  • Перехватывайте и обрабатывайте все нажатия клавиш, тем самым переопределяя нормальный механизм GTK + и позволяя делать исключения для ваших ускорителей.
  • Список ускорителей, которые вы удаляете вручную, когда виджет редактирования текста получает фокус, затем добавляйте их снова, когда виджет теряет фокус. В GTK + 3 это выполняется с помощью gtk_application_set_accels_for_action.

В связанном потоке вы можете найти пример кода для обоих подходов. Второй подход даже имеет пример в GTK + 2 и один в GTK + 3.