1

I reparent an external window into Qt application (XReparentWindow, XMapRaised, XMoveResizeWindow). It works, but when I click to that reparented window the system locks (no mouse or keyboard events), expect of may be some input inside the reparented window or may be my application.

Trying to embed, for example, gedit and clicking into it leads to keyboard events only in gedit (and even global Awesome's hotkeys disabled) and no mouse clicks anywhere (unless I close embedded gedit using Ctrl+Q).

The same if using QX11EmbedContainer. Even if do setEnabled(false) to it.

Why it locks up? How to prevent this lockup or how to disable input processing for some X window?

Vi.
  • 37,014
  • 18
  • 93
  • 148

1 Answers1

0

Reparenting a window into one own's application is covered by the XEmbed specification. If you read that spec, you'll see, that some additional work is to be done to make this work:

http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html

datenwolf
  • 159,371
  • 13
  • 185
  • 298
  • May be there is easy way to just disable clicking into that window? – Vi. Oct 13 '11 at 13:16
  • @Vi.: That won't solve your problem. The problem is, that the container and the embedded window are battling for input focus. Note that Qt does all the dirty details for you, just use the right class: http://doc.qt.nokia.com/stable/qx11embedcontainer.html – datenwolf Oct 13 '11 at 13:19
  • Tried with QX11EmbedContainer - the same. Trying to embed, for example, gedit and clicking into it leads to keyboard events only in gedit (and even global Awesome's hotkeys disabled) and no mouse clicks anywhere (unless I close embedded gedit using Ctrl+Q). – Vi. Oct 13 '11 at 13:28