diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/xembed.cc | 20 | ||||
-rw-r--r-- | src/xembed.hh | 12 |
2 files changed, 32 insertions, 0 deletions
diff --git a/src/xembed.cc b/src/xembed.cc new file mode 100644 index 00000000..92be330a --- /dev/null +++ b/src/xembed.cc @@ -0,0 +1,20 @@ +#include <fltk/Window.h> +#include <fltk/x11.h> +#include <fltk/x.h> + +#include "xembed.hh" + +using namespace fltk; +// TODO; Implement proper XEMBED support; +// http://standards.freedesktop.org/xembed-spec/xembed-spec-latest.html +void Xembed::embed (unsigned long xid) { +#if USE_X11 + fltk::Widget *r = resizable(); + // WORKAROUND: Avoid jumping windows with tiling window managers (e.g. dwm) + resizable(NULL); + fltk::Window::show(); + fltk::Widget::hide(); + resizable(r); + XReparentWindow (fltk::xdisplay, fltk::xid(this), xid, 0, 0); +#endif +} diff --git a/src/xembed.hh b/src/xembed.hh new file mode 100644 index 00000000..06bd599c --- /dev/null +++ b/src/xembed.hh @@ -0,0 +1,12 @@ +#ifndef __XIDWINDOW_HH__ +#define __XIDWINDOW_HH__ + +#include <fltk/Window.h> + +class Xembed : public fltk::Window { + public: + Xembed(int _w, int _h) : fltk::Window(_w, _h) {}; + void embed(unsigned long xid); +}; + +#endif |