commit 20955d76c6da03b11da98a914363549ac27816c5
parent ffc6aa63baa04582bcdc38d8792702a327cc4766
Author: Kris Maglione <bsdaemon@wmii.de>
Date: Fri, 23 Jun 2006 00:37:59 -0400
Write tags to _WIN_TAGS property to make restarts less painful. Change *BarClick args order (bar names can have spaces)
Diffstat:
5 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/cmd/wm/client.c b/cmd/wm/client.c
@@ -106,10 +106,7 @@ create_client(Window w, XWindowAttributes *wa)
void
set_client_state(Client * c, int state)
{
- long data[2];
-
- data[0] = (long) state;
- data[1] = (long) None;
+ long data[] = { state, None };
XChangeProperty(blz.display, c->win, wm_atom[WMState], wm_atom[WMState], 32,
PropModeReplace, (unsigned char *) data, 2);
}
@@ -344,10 +341,19 @@ gravitate_client(Client *c, Bool invert)
void
manage_client(Client *c)
{
+ XTextProperty tags;
Client *trans;
+ tags.nitems = 0;
+ XGetTextProperty(blz.display, c->win, &tags, tags_atom);
+
if(c->trans && (trans = client_of_win(c->trans)))
cext_strlcpy(c->tags, trans->tags, sizeof(c->tags));
+ else if(tags.nitems)
+ cext_strlcpy(c->tags, (char *)tags.value, sizeof(c->tags));
+
+ XFree(tags.value);
+
if(!strlen(c->tags))
apply_rules(c);
@@ -763,6 +769,9 @@ apply_tags(Client *c, const char *tags)
if(!strlen(c->tags))
apply_tags(c, "nil");
+
+ XChangeProperty(blz.display, c->win, tags_atom, XA_STRING, 8,
+ PropModeReplace, c->tags, strlen(c->tags));
}
static void
diff --git a/cmd/wm/event.c b/cmd/wm/event.c
@@ -73,15 +73,15 @@ handle_buttonrelease(XEvent *e)
if(ev->window == barwin) {
for(b=lbar; b; b=b->next)
if(ispointinrect(ev->x, ev->y, &b->brush.rect)) {
- snprintf(buf, sizeof(buf), "LeftBarClick %s %d\n",
- b->name, ev->button);
+ snprintf(buf, sizeof(buf), "LeftBarClick %d %s\n",
+ ev->button, b->name);
write_event(buf);
return;
}
for(b=rbar; b; b=b->next)
if(ispointinrect(ev->x, ev->y, &b->brush.rect)) {
- snprintf(buf, sizeof(buf), "RightBarClick %s %d\n",
- b->name, ev->button);
+ snprintf(buf, sizeof(buf), "RightBarClick %d %s\n",
+ ev->button, b->name);
write_event(buf);
return;
}
diff --git a/cmd/wm/wm.c b/cmd/wm/wm.c
@@ -123,6 +123,7 @@ init_atoms()
wm_atom[WMDelete] = XInternAtom(blz.display, "WM_DELETE_WINDOW", False);
net_atom[NetSupported] = XInternAtom(blz.display, "_NET_SUPPORTED", False);
net_atom[NetWMName] = XInternAtom(blz.display, "_NET_WM_NAME", False);
+ tags_atom = XInternAtom(blz.display, "_WIN_TAGS", False);
XChangeProperty(blz.display, blz.root, net_atom[NetSupported], XA_ATOM, 32,
PropModeReplace, (unsigned char *) net_atom, NetLast);
diff --git a/cmd/wm/wm.h b/cmd/wm/wm.h
@@ -181,6 +181,7 @@ char *user;
Default def;
Atom wm_atom[WMLast];
Atom net_atom[NetLast];
+Atom tags_atom;
Cursor cursor[CurLast];
unsigned int valid_mask;
unsigned int num_lock_mask;
diff --git a/rc/wmiirc b/rc/wmiirc
@@ -154,7 +154,8 @@ do
xwrite /lbar/$1 $WMII_NORMCOLORS $1
;;
LeftBarClick)
- xwrite /ctl view "$1";;
+ shift
+ xwrite /ctl view "$@";;
Key)
case "$1" in
$MODKEY-$LEFT)