Создание «наложения» на окно - PullRequest
0 голосов
/ 02 октября 2009

Можно ли создать окно, которое действует как наложение поверх другого окна, скажем, значок, который можно отобразить в строке заголовка или строке состояния окна?

Для целей этого вопроса предположим, что:

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

Если это возможно, как это можно сделать? Я пытался создать окно и отобразить его в правильном месте, но я никогда не вижу его; как будто его не существует. Я получаю дескриптор Window и могу даже преобразовать его в объект GdkWindow, но не могу добраться до точки его просмотра.

ETA : пример того, что я хочу сделать, можно найти в Интернете, сначала без того, что я пытаюсь сделать , и снова с ним, В этом случае посмотрите на меню, справа. Я хотел бы сделать это для любого произвольного приложения, чтобы пользователь мог щелкнуть этот маленький значок, чтобы «закрепить» окно.

Ответы [ 2 ]

1 голос
/ 02 октября 2009

Работа оконного менеджера заключается в том, чтобы взять новое окно и добавить оформление окна как «родительское окно» нового окна.

Возможно, вы сможете вставить свое окно между окном украшения менеджера окон и существующим окном, используя api окна XReparent ().

0 голосов
/ 16 ноября 2009

Должно быть возможно сделать это, используя только команды GDK, потому что они более или менее отображаются в одни и те же вызовы Xlib. Может быть, вы не учитываете, что должны каким-то образом обрабатывать события выставления (те, которые отправляются не в ваше приложение, а в чужое)? Кстати, как именно вы конвертируете дескриптор XWindow в GtkWindow?

...