tRespond to config requests from clients - glazier - window management experiments
DIR Log
DIR Files
DIR Refs
DIR Submodules
DIR README
DIR LICENSE
---
DIR commit 5e6bf0b2d01e5ab40114b3de30512122898d2dd0
DIR parent 58696186554c09e2c39f038f05b1be7148aa67e8
HTML Author: Willy Goiffon <dev@z3bra.org>
Date: Tue, 22 Oct 2019 14:01:04 +0200
Respond to config requests from clients
Diffstat:
M glazier.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+), 0 deletions(-)
---
DIR diff --git a/glazier.c b/glazier.c
t@@ -30,6 +30,7 @@ static int cb_mouse_release(xcb_generic_event_t *);
static int cb_motion(xcb_generic_event_t *);
static int cb_enter(xcb_generic_event_t *);
static int cb_configure(xcb_generic_event_t *);
+static int cb_configreq(xcb_generic_event_t *);
int verbose = 1;
xcb_connection_t *conn;
t@@ -78,6 +79,7 @@ static const struct ev_callback_t cb[] = {
{ XCB_MOTION_NOTIFY, cb_motion },
{ XCB_ENTER_NOTIFY, cb_enter },
{ XCB_CONFIGURE_NOTIFY, cb_configure },
+ { XCB_CONFIGURE_REQUEST, cb_configreq },
};
xcb_window_t
t@@ -404,6 +406,24 @@ cb_configure(xcb_generic_event_t *ev)
}
static int
+cb_configreq(xcb_generic_event_t *ev)
+{
+ xcb_configure_request_event_t *e;
+
+ e = (xcb_configure_request_event_t *)ev;
+
+ if (verbose)
+ fprintf(stderr, "config request: 0x%08x (0x%08x:%dx%d+%d+%d)\n",
+ e->parent, e->window,
+ e->width, e->height,
+ e->x, e->y);
+
+ wm_teleport(e->window, e->x, e->y, e->width, e->height);
+
+ return 0;
+}
+
+static int
ev_callback(xcb_generic_event_t *ev)
{
uint8_t i;