LINUX.ORG.RU

История изменений

Исправление Deleted, (текущая версия) :

Было чисто интересно о причинах узнать.

Если ты с виндой работал, то замечал такую особенность: если нажать кнопку вызова меню Пуск, фокус ввода с текущего окна пропадает, когда меню открыто. То же самое произойдёт, если ПКМ на панели задач для вызова контекстного меню — фокус ввода с окна приложения пропадает. Это потому что панель, натурально, получает фокус ввода для того, чтобы в меню работала навигация с клавиатуры.

В иксах, в принципе, всё то же самое. У тебя три возможности работать с меню под иксами:

  • Сделать окно менюшки фокусабельным, чтобы оно само получало ввод.
  • Не делать окно менюшки фокусабельным, но передавать сообщения из главного окна приложения (открывшего меню) в окно меню.
  • Захватить нахрен весь ввод на время работы меню.

В винде применён второй способ. В некоторых приложениях и тулкитах для X11 тоже.

В некоторых старых приложениях для X11 — первый.

Ну а в gtk — третий.

А виноваты почему-то оказались иксы.

Например, ничего не мешало сделать изоляцию клиентов, чтобы одни программы не могли тырить ввод других.

Понятно, что можно. Но у экспертов с ЛОРа тут своя религия: «нельзя ломать совместимость внутри иксов, но можно ломать её снаружи!». Клиника.

Исходная версия Deleted, :

Было чисто интересно о причинах узнать.

Если ты с виндой работал, то замечал такую особенность: если нажать кнопку вызова меню Пуск, фокус ввода с текущего окна пропадает, когда меню открыто. То же самое произойдёт, если ПКМ на панели задач для вызова контекстного меню — фокус ввода с окна приложения пропадает. Это потому что панель, натурально, получает фокус ввода для того, чтобы в меню работала навигация с клавиатуры.

В иксах, в принципе, всё то же самое. У тебя три возможности работать работать с меню:

  • Сделать окно менюшки фокусабельным, чтобы оно само получало ввод.
  • Не делать окно менюшки фокусабельным, но передавать сообщения из главного окна приложения (открывшего меню) в окно меню.
  • Захватить нахрен весь ввод на время работы меню.

В винде применён второй способ. В некоторых приложениях и тулкитах для X11 тоже.

В некоторых старых приложениях для X11 — первый.

Ну а в gtk — третий.

А виноваты почему-то оказались иксы.

Например, ничего не мешало сделать изоляцию клиентов, чтобы одни программы не могли тырить ввод других.

Понятно, что можно. Но у экспертов с ЛОРа тут своя религия: «нельзя ломать совместимость внутри иксов, но можно ломать её снаружи!». Клиника.