Playing around with XEmbed

As some of you might have noticed, XEmbed is merged into Qt 4 with the classes QX11EmbedContainer and QX11EmbedWidget. :-) The Qt 3 classes are still part of Qt Solutions (QtXEmbed), but they are free for download (GPL).

Bradley Hughes and I put in some effort to beef up the implementation a bit, and besides a couple of quirks we're still working on, the XEmbed classes mostly implement a complete window manager now. That means that we properly handle both XEmbed and non-XEmbed widgets with respect to focus and keyboard input, size hints etc.. Pretty cool! We still have some work to do on accelerator support and a couple of bugs, though.. I put together a test app for doing basic focus testing, and ended up with this stuff:

XEmbed embedding xemacs and mplayer
Click here for a 1:1 screen shot.

That's emacs with my cheezy wheat-colored background, and mplayer's embedded in the window below (Jean Claude!). The cool thing is that although neither emacs nor mplayer support XEmbed, keyboard focus works fine (need to click-to-focus to get focus into mplayer, though). Shortcuts are forwarded straight to emacs so it's quite usable. And you can skip frames in the mplayer window.

Get the sources for the app here (works fine with 4.0.0, but the latest fixes are in the soon-to-be-released 4.0.1). And btw, all fixes in the Qt 4 classes are backported to the Qt 3 classes, so they'll be made available in the next Solutions release.

Blog Topics: