From 920b3a2e417bab28622002750dde564f09602797 Mon Sep 17 00:00:00 2001 From: Matthias Kruk Date: Mon, 3 May 2021 09:29:40 +0900 Subject: [PATCH] x, common: Add convenience functions and common types This commit adds convenience functions that wrap functionality provided by Xlib. Further, it adds a structure that defines the geometry of an object. --- common.h | 11 +++++++++++ x.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ x.h | 11 +++++++++++ 3 files changed, 68 insertions(+) create mode 100644 common.h create mode 100644 x.c create mode 100644 x.h diff --git a/common.h b/common.h new file mode 100644 index 0000000..3bb5368 --- /dev/null +++ b/common.h @@ -0,0 +1,11 @@ +#ifndef COMMON_H +#define COMMON_H 1 + +struct geom { + int x; + int y; + unsigned int w; + unsigned int h; +}; + +#endif /* COMMON_H */ diff --git a/x.c b/x.c new file mode 100644 index 0000000..c2e8750 --- /dev/null +++ b/x.c @@ -0,0 +1,46 @@ +#include +#include +#include +#include "common.h" + +void x_configure_notify(Display *display, Window window, + struct geom *geom, unsigned int border) +{ + XConfigureEvent event; + + memset(&event, 0, sizeof(event)); + + event.type = ConfigureNotify; + event.display = display; + event.event = window; + event.window = window; + + if(geom) { + event.x = geom->x; + event.y = geom->y; + event.width = geom->w; + event.height = geom->h; + } + + event.border_width = border; + event.above = None; + event.override_redirect = False; + + XSendEvent(display, window, False, StructureNotifyMask, (XEvent*)&event); + + return; +} + +int x_get_geom(Display *display, Window window, struct geom *geom) +{ + Window root; + unsigned int border; + unsigned int depth; + + if(XGetGeometry(display, window, &root, &geom->x, &geom->y, + &geom->w, &geom->h, &border, &depth) == False) { + return(-EIO); + } + + return(0); +} diff --git a/x.h b/x.h new file mode 100644 index 0000000..fb99e13 --- /dev/null +++ b/x.h @@ -0,0 +1,11 @@ +#ifndef MWM_X_H +#define MWM_X_H 1 + +#include +#include "common.h" + +void x_configure_notify(Display *display, Window window, + struct geom *geom, unsigned int border); +int x_get_geom(Display *display, Window window, struct geom *geom); + +#endif /* MWM_X_H */ -- 2.47.3