[X11] Fullscreen
захват фокуса - редкостный хак, который работать нормально не будет
если ты пишешь в куте, то пиши в куте, а не лезь в икслиб - лучше кутешников ты все равно не сделаешь, а вот поломать что-нибудь в кутешном приложении - легко.
что ты подразумеваешь под фуллскрином в оконном приложении? фаерфокс после ф11 - это для тебя фуллскрин или нет? или тебе хочется режима а-ля фуллскрин в опенжл?
На время открытия диалога выходи из фуллскрина.
фуллскрин - значит без декораторов и поверх всего остального. Пишу для встроенной системы. Прога и есть основная функциональность этой системы. Но там разные способы спрятать всё ненужно есть. Буду думать.
Ну тогда возьми за основу какой-нибудь мелкий WM типа blackbox и пиши себе
фуллскрин - значит без декораторов и поверх всего остального.
Тут недавно б/у книги по иксам продавались, задумайся о покупке, пора уже учить предметную область, линуксоид. Фуллскрин - значит только _NET_WM_STATE_FULLSCREEN, а декорацию, репарентинг, композиторство, stacking order и положенный прибор на standards.freedesktop.org оставь для выдумщиков-девелоперов window manager'ов.
Тебе же, согласно описанию задачи, хочется иметь диалоговые окна без фокуса c порядком stacking order выше, чем _NET_WM_STATE_FULLSCREEN, что уже говорит, что ты хочешь странного.
Stacking order
To obtain good interoperability between different Desktop Environments, the following layered stacking order is recommended, from the bottom:
* windows of type _NET_WM_TYPE_DESKTOP
* windows having state _NET_WM_STATE_BELOW
* windows not belonging in any other layer
* windows of type _NET_WM_TYPE_DOCK (unless they have state _NET_WM_TYPE_BELOW) and windows having state _NET_WM_STATE_ABOVE
* focused windows having state _NET_WM_STATE_FULLSCREEN
Windows that are transient for another window should be kept above this window.
The window manager may choose to put some windows in different stacking positions, for example to allow the user to bring currently a active window to the top and return it back when the window looses focus.
Ну и __KOHE4HO__3Е__ всё это wm-зависимо - в одном так, в другом сяк, а какой у тебя, если вообще есть, телепатам известно.
Оставить комментарий
yroslavasako
Как в иксах можно сделать fullscreen? Сейчас возникла проблема с Qt под линукс. Как у него честно написано в хелпе, встроенная функция showFullScreen не всегда хорошо работает в линуксе. Основная проблема в том, что в фуллскрине заспавненные модальные диалоги имеют тот же уровень модальности, что и основное окно и если мимо это диалога промахнуться, то он уходит на задний план, но по-прежнему не даёт вводить в главное окно. Всё что приходит в голову - это- отправлять главное окно в root window (такое возможно? в каких менеджерах? чтобы все остальные окна гарантированно рисовались поверх него
- захватить фокус мышки в диалоговое окно, чтобы нельзя было кликнуть мимо
- что-то ещё, чего я не знаю.
Какой подход кажется оптимальным, есть ли уже опробованные варианты?