LINUX.ORG.RU

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

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

Есть два поведения: первое — флаг override redirect при создании окна (выпадающих меню, например), второе — читать ICCCM на предмет свойства окна WM_TRANSIENT_FOR (обычно диалоговые окна, окна выбора файлов). Для второго есть функция XSetTransientForHint.

А я вот несколько раз наблюдал решения когда пытаешься поставить в фокус родительское, которое находится под всплывшим, но «оно не даёт», и оставляет в фокусе всплывшее, пока ты в нем что-то там не впишешь или не выберешь (закрыв его). Можешь ссылкой кинуть где почитать про реализацию?

Это, скорее всего, WM_TRANSIENT_FOR. Открываешь любое приложение, например, GTK. в терминале пишешь:

$ xprop | grep "WM_TRANSIENT_FOR"

и клацаешь в диалог. В диалогах, которые не дают что-то ввести в родительском окне, это свойство будет, а в обычных окнах эта команда ничего не выдаст. Можешь проверить.

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

Есть два поведения: первое — флаг override redirect при создании окна (выпадающих меню, например), второе: читать ICCCM на предмет свойства окна WM_TRANSIENT_FOR (обычно диалоговые окна, окна выбора файлов). Для второго есть функция XSetTransientForHint.

А я вот несколько раз наблюдал решения когда пытаешься поставить в фокус родительское, которое находится под всплывшим, но «оно не даёт», и оставляет в фокусе всплывшее, пока ты в нем что-то там не впишешь или не выберешь (закрыв его). Можешь ссылкой кинуть где почитать про реализацию?

Это, скорее всего, WM_TRANSIENT_FOR. Открываешь любое приложение, например, GTK. в терминале пишешь:

$ xprop | grep "WM_TRANSIENT_FOR"

и клацаешь в диалог. В диалогах, которые не дают что-то ввести в родительском окне, это свойство будет, а в обычных окнах эта команда ничего не выдаст. Можешь проверить.