История изменений
Исправление Deleted, (текущая версия) :
Было чисто интересно о причинах узнать.
Если ты с виндой работал, то замечал такую особенность: если нажать кнопку вызова меню Пуск, фокус ввода с текущего окна пропадает, когда меню открыто. То же самое произойдёт, если ПКМ на панели задач для вызова контекстного меню — фокус ввода с окна приложения пропадает. Это потому что панель, натурально, получает фокус ввода для того, чтобы в меню работала навигация с клавиатуры.
В иксах, в принципе, всё то же самое. У тебя три возможности работать с меню под иксами:
- Сделать окно менюшки фокусабельным, чтобы оно само получало ввод.
- Не делать окно менюшки фокусабельным, но передавать сообщения из главного окна приложения (открывшего меню) в окно меню.
- Захватить нахрен весь ввод на время работы меню.
В винде применён второй способ. В некоторых приложениях и тулкитах для X11 тоже.
В некоторых старых приложениях для X11 — первый.
Ну а в gtk — третий.
А виноваты почему-то оказались иксы.
Например, ничего не мешало сделать изоляцию клиентов, чтобы одни программы не могли тырить ввод других.
Понятно, что можно. Но у экспертов с ЛОРа тут своя религия: «нельзя ломать совместимость внутри иксов, но можно ломать её снаружи!». Клиника.
Исходная версия Deleted, :
Было чисто интересно о причинах узнать.
Если ты с виндой работал, то замечал такую особенность: если нажать кнопку вызова меню Пуск, фокус ввода с текущего окна пропадает, когда меню открыто. То же самое произойдёт, если ПКМ на панели задач для вызова контекстного меню — фокус ввода с окна приложения пропадает. Это потому что панель, натурально, получает фокус ввода для того, чтобы в меню работала навигация с клавиатуры.
В иксах, в принципе, всё то же самое. У тебя три возможности работать работать с меню:
- Сделать окно менюшки фокусабельным, чтобы оно само получало ввод.
- Не делать окно менюшки фокусабельным, но передавать сообщения из главного окна приложения (открывшего меню) в окно меню.
- Захватить нахрен весь ввод на время работы меню.
В винде применён второй способ. В некоторых приложениях и тулкитах для X11 тоже.
В некоторых старых приложениях для X11 — первый.
Ну а в gtk — третий.
А виноваты почему-то оказались иксы.
Например, ничего не мешало сделать изоляцию клиентов, чтобы одни программы не могли тырить ввод других.
Понятно, что можно. Но у экспертов с ЛОРа тут своя религия: «нельзя ломать совместимость внутри иксов, но можно ломать её снаружи!». Клиника.