X11 не обрезанные дочерние окна

Есть ли в X понятие необрезанных дочерних окон? Поведение в Windows и OSX для них:

  1. родитель всегда остается позади своих детей
  2. дети закрываются автоматически, когда родитель закрывается
  3. дети следуют за родителем при движении

Если ответ отрицательный, то я могу эмулировать 2 и 3, но как насчет 1?

Спасибо,
Космин.


person Community    schedule 04.07.2015    source источник
comment
есть вопрос без ответа на 1. поэтому я думаю, что на него также не будет ответа ="сохранение окна x11 поверх другого окна"> stackoverflow.com/questions/25952934/   -  person    schedule 05.07.2015


Ответы (2)


Ближе всего к перекрывающимся необрезанным дочерним окнам в X является свойство окна WM_TRANSIENT_FOR. Это создаст окно, которое:

  • не будет отображаться на панели задач
  • не будет иметь кнопок свертывания и развертывания
  • будет свернуто вместе с его переходным окном
  • всегда будет оставаться поверх своего переходного окна (самое важное)
person Community    schedule 15.07.2015
comment
Обратите внимание, что Qt внутренне использует это свойство для принудительного применения отношения без отсечения. В Qt 5.6.2 вы должны использовать setTransientParent вместе с временным типом окна, чтобы иметь такое поведение (временный тип окна может быть одним из: Dialog, Sheet, Tool, SplashScreen, ToolTip, Drawer, Popup). - person fkorsa; 26.06.2017

  1. Да (вы можете переопределить это, если реализуете свой собственный композитный менеджер)
  2. Да, если окно не добавлено в " сохранить набор".
  3. Да (но опять же, с вашим собственным композитным менеджером вы можете изменить визуальное отображение [содержимого всей иерархии окон] -> [экран] любым удобным для вас способом)
person Andrey Sidorov    schedule 05.07.2015
comment
1 и 3. Хорошо, это в пределах ожидаемого уровня абсурда и нелепости. Люди переопределяют WM в приложениях на практике? Можете ли вы дать мне несколько указателей/подсказок/стандартов/wm-attributes-to-google? Я смотрю на Qt и wxWidgets, но не вижу, чтобы они это делали (посмотрю еще). - person ; 05.07.2015
comment
1 и 3 - с этой точки зрения - нет, не на уровне приложения. Стандартных подсказок, указывающих на это, нет, поэтому считать невозможным - person Andrey Sidorov; 05.07.2015
comment
Спасибо. Если вы измените свои да на нет, то я приму ответ :O Или мне нужно уточнить, что я хочу сначала сделать приложение, а не WM? Кажется, что в X больше WM, чем приложений, поэтому, возможно, вопрос сбивает с толку :) (извините, я просто не могу не быть язвительным после борьбы с X в течение 2 недель, пожалуйста, не принимайте это на свой счет, мне нужен выход для моего злость и эта коробочка выглядит идеально) - person ; 05.07.2015
comment
Ваш вопрос касался X в целом, поэтому я ответил, что возможно :) Даже из приложения только вы можете заставить текущий составной менеджер выйти, приобретя _NET_WM_CM_Sn и реализовать эту функцию композитинга в приложении, но я согласен, что это слишком экзотично с точки зрения разработчика обычного приложения с графическим интерфейсом. - person Andrey Sidorov; 06.07.2015
comment
Звучит интригующе. Это долгий разговор. для stackoverflow, но я ценю ваше время и хотел бы попробовать это. Я принял ответ, но если у вас есть более подробная информация об этом, добавьте его в ответ. Спасибо. - person ; 06.07.2015
comment
Так, например, я хотел бы знать: если я получаю выбор на экране, должен ли я теперь управлять всеми окнами на этом экране или только моими окнами, пока я сохраняю выбор? Как долго я должен держать выбор? Есть ли предостережения по этому поводу (например, WM не восстанавливается должным образом, если мое приложение выходит из строя)? - person ; 06.07.2015
comment
О, и что происходит, когда окно перемещается на другой экран? :) - person ; 06.07.2015
comment
В наши дни в большинстве мультимониторных установок используется один логический экран (через расширение Xinerama), поэтому вы, вероятно, никогда не увидите более одного экрана в смысле предыдущего комментария. Для обзора всех композитных и композитных менеджеров, пожалуйста, прочитайте talisman.org/~ erlkonig/misc/x11-composite-tutorial С удовольствием отвечу на более конкретные вопросы :) - person Andrey Sidorov; 06.07.2015
comment
Хорошо знать. Спасибо за помощь. Я сделаю отдельные вопросы, как я углублюсь в это. Кстати, похоже, что WM_TRANSIENT_FOR может решить пункты 1 и 2, поэтому мне не нужно идти по маршруту _NET_WM_CM_Sn. - person ; 06.07.2015