aboutsummaryrefslogtreecommitdiffstats
path: root/group.c
diff options
context:
space:
mode:
authorokan2012-07-03 13:49:03 +0000
committerokan2012-07-03 13:49:03 +0000
commitddc2baea991a9aee4b138ed29436fe423d1c4d3e (patch)
tree490e677d510550663ec475c0c1ce96a49c78538a /group.c
parentd9b285478d95868143d2231edca6375c0137aba5 (diff)
downloadcwm-ddc2baea991a9aee4b138ed29436fe423d1c4d3e.tar.gz
re-implement atom handing; makes for a normalized and more consistent
separation between cwm and ewmh. seen by a few.
Diffstat (limited to 'group.c')
-rw-r--r--group.c57
1 files changed, 18 insertions, 39 deletions
diff --git a/group.c b/group.c
index ba84956..0119cd2 100644
--- a/group.c
+++ b/group.c
@@ -16,7 +16,7 @@
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
- * $OpenBSD: group.c,v 1.57 2012/05/16 21:57:21 okan Exp $
+ * $OpenBSD: group.c,v 1.58 2012/07/03 13:49:03 okan Exp $
*/
#include <sys/param.h>
@@ -48,38 +48,31 @@ const char *shortcut_to_name[] = {
static void
group_add(struct group_ctx *gc, struct client_ctx *cc)
{
- long no;
if (cc == NULL || gc == NULL)
errx(1, "group_add: a ctx is NULL");
- no = gc->shortcut - 1;
-
if (cc->group == gc)
return;
if (cc->group != NULL)
TAILQ_REMOVE(&cc->group->clients, cc, group_entry);
- XChangeProperty(X_Dpy, cc->win, _NET_WM_DESKTOP, XA_CARDINAL,
- 32, PropModeReplace, (unsigned char *)&no, 1);
-
TAILQ_INSERT_TAIL(&gc->clients, cc, group_entry);
cc->group = gc;
+
+ xu_ewmh_net_wm_desktop(cc);
}
static void
group_remove(struct client_ctx *cc)
{
- long no = 0xffffffff;
-
if (cc == NULL || cc->group == NULL)
errx(1, "group_remove: a ctx is NULL");
- XChangeProperty(X_Dpy, cc->win, _NET_WM_DESKTOP, XA_CARDINAL,
- 32, PropModeReplace, (unsigned char *)&no, 1);
-
TAILQ_REMOVE(&cc->group->clients, cc, group_entry);
cc->group = NULL;
+
+ xu_ewmh_net_wm_desktop(cc);
}
static void
@@ -146,8 +139,6 @@ void
group_init(struct screen_ctx *sc)
{
int i;
- long viewports[2] = {0, 0};
- long ndesks = CALMWM_NGROUPS, zero = 0;
TAILQ_INIT(&sc->groupq);
sc->group_hideall = 0;
@@ -164,23 +155,11 @@ group_init(struct screen_ctx *sc)
TAILQ_INSERT_TAIL(&sc->groupq, &sc->groups[i], entry);
}
- /* we don't support large desktops, so this is always (0, 0) */
- XChangeProperty(X_Dpy, sc->rootwin, _NET_DESKTOP_VIEWPORT,
- XA_CARDINAL, 32, PropModeReplace, (unsigned char *)viewports, 2);
- XChangeProperty(X_Dpy, sc->rootwin, _NET_NUMBER_OF_DESKTOPS,
- XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&ndesks, 1);
- /*
- * we don't use virtual roots, so make sure it's not there from a
- * previous wm.
- */
- XDeleteProperty(X_Dpy, sc->rootwin, _NET_VIRTUAL_ROOTS);
- /*
- * We don't really have a ``showing desktop'' mode, so this is zero
- * always. XXX Note that when we hide all groups, or when all groups
- * are hidden we could technically set this later on.
- */
- XChangeProperty(X_Dpy, sc->rootwin, _NET_SHOWING_DESKTOP,
- XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&zero, 1);
+ xu_ewmh_net_wm_desktop_viewport(sc);
+ xu_ewmh_net_wm_number_of_desktops(sc);
+ xu_ewmh_net_showing_desktop(sc);
+ xu_ewmh_net_virtual_roots(sc);
+
group_setactive(sc, 0);
}
@@ -209,8 +188,8 @@ static void
group_setactive(struct screen_ctx *sc, long idx)
{
sc->group_active = &sc->groups[idx];
- XChangeProperty(X_Dpy, sc->rootwin, _NET_CURRENT_DESKTOP,
- XA_CARDINAL, 32, PropModeReplace, (unsigned char *)&idx, 1);
+
+ xu_ewmh_net_current_desktop(sc, idx);
}
void
@@ -439,8 +418,8 @@ group_autogroup(struct client_ctx *cc)
if (cc->app_class == NULL || cc->app_name == NULL)
return;
- if (xu_getprop(cc->win, _NET_WM_DESKTOP, XA_CARDINAL,
- 1, (unsigned char **)&grpno) > 0) {
+ if (xu_getprop(cc->win, ewmh[_NET_WM_DESKTOP].atom,
+ XA_CARDINAL, 1, (unsigned char **)&grpno) > 0) {
if (*grpno == 0xffffffff)
no = 0;
else if (*grpno > CALMWM_NGROUPS || *grpno < 0)
@@ -483,8 +462,9 @@ group_update_names(struct screen_ctx *sc)
int format_ret, i = 0, nstrings = 0, n, setnames = 0;
unsigned long bytes_after, num_ret;
- if (XGetWindowProperty(X_Dpy, sc->rootwin, _NET_DESKTOP_NAMES, 0,
- 0xffffff, False, UTF8_STRING, &type_ret, &format_ret,
+ if (XGetWindowProperty(X_Dpy, sc->rootwin,
+ ewmh[_NET_DESKTOP_NAMES].atom, 0, 0xffffff, False,
+ cwmh[UTF8_STRING].atom, &type_ret, &format_ret,
&num_ret, &bytes_after, &prop_ret) == Success &&
prop_ret != NULL && format_ret == 8) {
/* failure, just set defaults */
@@ -545,6 +525,5 @@ group_set_names(struct screen_ctx *sc)
q += slen;
}
- XChangeProperty(X_Dpy, sc->rootwin, _NET_DESKTOP_NAMES,
- UTF8_STRING, 8, PropModeReplace, p, len);
+ xu_ewmh_net_desktop_names(sc, p, len);
}