mirror of
https://github.com/amiwm/amiwm.git
synced 2026-04-14 11:04:18 +00:00
implement a table of atoms defined only once
Previously, adding a new atom into the code required: 1. In <icc.h>, add the line `extern Atom my_new_atom;` declaring the new atom. 2. In <icc.c>, add the line `Atom my_new_atom;` defining the new atom. 3. In <icc.c>, add the line `my_new_atom = XInternAtom(dpy, "MY_NEW_ATOM", False);` interning this new atom, and assigning the interned value to the variable. Now, just add a line with the atom's name in the X-MACRO in <icc.h>, and a XInternAtoms(3) and a set of macros will do the rest. All new atoms will be referred to as an entry in the ATOMS[] array. For example: ATOMS[MY_NEW_ATOM] The exception are for those REALLY OLD atoms that have already a dedicated compile-time-known value defined at <X11/Xatom.h>. Those do not need to be interned; and are referred to with a constant beginning with the `XA_` prefix. For example: XA_WM_CLASS
This commit is contained in:
6
client.c
6
client.c
@@ -200,7 +200,7 @@ void setclientstate(Client *c, int state)
|
||||
}
|
||||
}
|
||||
c->state = state;
|
||||
XChangeProperty(dpy, c->window, wm_state, wm_state, 32,
|
||||
XChangeProperty(dpy, c->window, ATOMS[WM_STATE], ATOMS[WM_STATE], 32,
|
||||
PropModeReplace, (unsigned char *)data, 2);
|
||||
}
|
||||
|
||||
@@ -208,7 +208,7 @@ void getstate(Client *c)
|
||||
{
|
||||
long *data=NULL;
|
||||
|
||||
if(_getprop(c->window, wm_state, wm_state, 2l, (char **)&data)>0) {
|
||||
if(_getprop(c->window, ATOMS[WM_STATE], ATOMS[WM_STATE], 2l, (char **)&data)>0) {
|
||||
c->state=*data;
|
||||
XFree((char *)data);
|
||||
}
|
||||
@@ -442,7 +442,7 @@ reparent_client(Scrn *s, Client *client)
|
||||
if(client->parent != client->scr->root)
|
||||
XReparentWindow(dpy, client->parent, s->back, client->x, client->y);
|
||||
if (s->deftitle != NULL)
|
||||
setstringprop(client->window, amiwm_screen, s->deftitle);
|
||||
setstringprop(client->window, ATOMS[AMIWM_SCREEN], s->deftitle);
|
||||
sendconfig(client);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user