diff options
| author | auric <auric7@protonmail.com> | 2025-09-07 20:17:07 -0500 |
|---|---|---|
| committer | auric <auric7@protonmail.com> | 2025-09-07 20:17:07 -0500 |
| commit | 22d02614eaa4530092d564336b3e7076c9f0bc36 (patch) | |
| tree | 947fd56ed33fedb80c14dab7adab0dc71760540b /oldresources/st/patch/st_embedder_x.c | |
| parent | 7de2c2044596ef810045e4565916e18903d822c1 (diff) | |
1
Diffstat (limited to 'oldresources/st/patch/st_embedder_x.c')
| -rw-r--r-- | oldresources/st/patch/st_embedder_x.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/oldresources/st/patch/st_embedder_x.c b/oldresources/st/patch/st_embedder_x.c new file mode 100644 index 0000000..c73c389 --- /dev/null +++ b/oldresources/st/patch/st_embedder_x.c @@ -0,0 +1,50 @@ +static Window embed; + +void +createnotify(XEvent *e) +{ + XWindowChanges wc; + + if (embed || e->xcreatewindow.override_redirect) + return; + + embed = e->xcreatewindow.window; + + XReparentWindow(xw.dpy, embed, xw.win, 0, 0); + XSelectInput(xw.dpy, embed, PropertyChangeMask | StructureNotifyMask | EnterWindowMask); + + XMapWindow(xw.dpy, embed); + sendxembed(XEMBED_EMBEDDED_NOTIFY, 0, xw.win, 0); + + wc.width = win.w; + wc.height = win.h; + XConfigureWindow(xw.dpy, embed, CWWidth | CWHeight, &wc); + + XSetInputFocus(xw.dpy, embed, RevertToParent, CurrentTime); +} + +void +destroynotify(XEvent *e) +{ + visibility(e); + if (embed == e->xdestroywindow.window) { + focus(e); + } +} + +void +sendxembed(long msg, long detail, long d1, long d2) +{ + XEvent e = { 0 }; + + e.xclient.window = embed; + e.xclient.type = ClientMessage; + e.xclient.message_type = xw.xembed; + e.xclient.format = 32; + e.xclient.data.l[0] = CurrentTime; + e.xclient.data.l[1] = msg; + e.xclient.data.l[2] = detail; + e.xclient.data.l[3] = d1; + e.xclient.data.l[4] = d2; + XSendEvent(xw.dpy, embed, False, NoEventMask, &e); +} |
