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
frame.c
6
frame.c
@@ -190,7 +190,7 @@ void reparent(Client *c)
|
||||
c->scr = lc->fsscr;
|
||||
else
|
||||
c->scr = lc->scr;
|
||||
} else if(XGetTextProperty(dpy, c->window, &screen_prop, amiwm_screen)) {
|
||||
} else if(XGetTextProperty(dpy, c->window, &screen_prop, ATOMS[AMIWM_SCREEN])) {
|
||||
do {
|
||||
if(s->root == scr->root &&
|
||||
(!s->deftitle[screen_prop.nitems])&&!strncmp(s->deftitle,
|
||||
@@ -329,7 +329,7 @@ void reparent(Client *c)
|
||||
XMapSubwindows(dpy, c->parent);
|
||||
sendconfig(c);
|
||||
if (scr->deftitle != NULL)
|
||||
setstringprop(c->window, amiwm_screen, scr->deftitle);
|
||||
setstringprop(c->window, ATOMS[AMIWM_SCREEN], scr->deftitle);
|
||||
if(prefs.focus == FOC_CLICKTOTYPE)
|
||||
XGrabButton(dpy, Button1, AnyModifier, c->parent, True,
|
||||
ButtonPressMask, GrabModeSync, GrabModeAsync, None, wm_curs);
|
||||
@@ -737,7 +737,7 @@ void gadgetunclicked(Client *c, XEvent *e)
|
||||
redraw(c, w);
|
||||
if(w==c->close) {
|
||||
if((c->proto & Pdelete)&&!(e->xbutton.state&ShiftMask))
|
||||
sendcmessage(c->window, wm_protocols, wm_delete);
|
||||
sendcmessage(c->window, ATOMS[WM_PROTOCOLS], ATOMS[WM_DELETE_WINDOW]);
|
||||
else
|
||||
XKillClient(dpy, c->window);
|
||||
} else if(w==c->depth)
|
||||
|
||||
Reference in New Issue
Block a user