summary refs log tree commit diff
path: root/group.c
diff options
context:
space:
mode:
authoroga <oga>2008-03-22 15:09:45 +0000
committeroga <oga>2008-03-22 15:09:45 +0000
commit36c1aac90f7253ba173ebedf1ed76fb743c8f828 (patch)
tree8df4568b3453bab4b10fcd0f96d3d9bea2320650 /group.c
parentcd46788d85428b539975d8923549bc282eb1b68d (diff)
downloadcwm-36c1aac90f7253ba173ebedf1ed76fb743c8f828.tar.gz
cwm-36c1aac90f7253ba173ebedf1ed76fb743c8f828.tar.xz
cwm-36c1aac90f7253ba173ebedf1ed76fb743c8f828.zip
Rip out, burn, and dance around the grave of group-edit mode.
I've yet to speak to anyone who uses it, so just kill it.

You can still add/remove from groups using the mouse binding.  Groups
may get a re-work sometime soon if i have a stroke of genius.

knocks about 4k off the i386 binary for me.

ok okan@, todd@.
Diffstat (limited to 'group.c')
-rw-r--r--group.c275
1 files changed, 8 insertions, 267 deletions
diff --git a/group.c b/group.c
index 77a3bf2..ea49862 100644
--- a/group.c
+++ b/group.c
@@ -24,20 +24,13 @@
 
 #define CALMWM_NGROUPS 9
 
-int                 Groupmode = 0;
 int                 Groupnamemode = 0;
 struct group_ctx   *Group_active = NULL;
-struct group_ctx   *Group_current = NULL;
 struct group_ctx    Groups[CALMWM_NGROUPS];
 char                Group_name[256];
-int                 Groupfocusset = 0;
-Window              Groupfocuswin;
-int                 Groupfocusrevert;
 int                 Grouphideall = 0;
 struct group_ctx_q  Groupq;
 
-#define GroupMask (KeyPressMask|ExposureMask)
-
 static char *shortcut_to_name[] = {
 	"XXX", "one", "two", "three",
 	"four", "five", "six", "seven",
@@ -58,7 +51,6 @@ _group_add(struct group_ctx *gc, struct client_ctx *cc)
 
 	TAILQ_INSERT_TAIL(&gc->clients, cc, group_entry);
 	cc->group = gc;
-	cc->groupcommit = 0;
 }
 
 static void
@@ -69,38 +61,11 @@ _group_remove(struct client_ctx *cc)
 
 	TAILQ_REMOVE(&cc->group->clients, cc, group_entry);
 	cc->group = NULL;
-	cc->groupcommit = 0;
 	cc->highlight = 0;
 	client_draw_border(cc);
 }
 
 static void
-_group_commit(struct group_ctx *gc)
-{
-  	struct client_ctx *cc;
-
-	if (gc == NULL)
-		errx(1, "_group_commit: ctx is null");
-
-	TAILQ_FOREACH(cc, &gc->clients, group_entry)
-		cc->groupcommit = 1;
-}
-
-static void
-_group_purge(struct group_ctx *gc)
-{
-	struct client_ctx *cc;
-
-	if (gc == NULL)
-		errx(1, "_group_purge: ctx is null");
-
-	TAILQ_FOREACH(cc, &gc->clients, group_entry)
-		if (cc->groupcommit == 0)
-			_group_remove(cc);
-}
-
-
-static void
 _group_hide(struct group_ctx *gc)
 {
   	struct client_ctx *cc;
@@ -155,27 +120,6 @@ _group_show(struct group_ctx *gc)
 	Group_active = gc;
 }
 
-
-
-static void
-_group_destroy(struct group_ctx *gc)
-{
-	struct client_ctx *cc;
-
-	if (gc->name != NULL) {
-		xfree(gc->name);
-		gc->name = NULL;
-	}
-
-	while ((cc = TAILQ_FIRST(&gc->clients)) != NULL) {
-		TAILQ_REMOVE(&gc->clients, cc, group_entry);
-		cc->group = NULL;
-		cc->groupcommit = 0;
-		cc->highlight = 0;
-		client_draw_border(cc);
-	}
-}
-
 void
 group_init(void)
 {
@@ -190,110 +134,12 @@ group_init(void)
 		TAILQ_INSERT_TAIL(&Groupq, &Groups[i], entry);
 	}
 
-	Group_current = Group_active = &Groups[0];
+	Group_active = &Groups[0];
 }
 
-/* 
- * manipulate the 'current group'
+/*
+ * Colouring for groups upon add/remove.
  */
-
-/* change the current group */
-void
-group_select(int idx)
-{
-	struct group_ctx *gc = Group_current;
-	struct client_ctx *cc;
-
-	if (idx < 0 || idx >= CALMWM_NGROUPS)
-		return;
-
-	TAILQ_FOREACH(cc, &gc->clients, group_entry) {
-		cc->highlight = 0;
-		client_draw_border(cc);
-	}
-
-	_group_commit(gc);
-	Group_current = &Groups[idx];
-
-	group_display_draw(screen_current());
-	return;
-}
-
-/* enter group mode */
-void
-group_enter(void)
-{
-  	if (Groupmode != 0)
-		errx(1, "group_enter called twice");
-
-	if (Group_current == NULL)
-		Group_current = &Groups[0];
-
-	/* setup input buffer */
-	Group_name[0] = '\0';
-
-  	Groupmode = 1;
-
-	group_display_init(screen_current());
-	group_display_draw(screen_current());
-}
-
-/* exit group mode */
-void
-group_exit(int commit)
-{
-	struct group_ctx *gc = Group_current;
-	struct client_ctx *cc;
-
-  	if (Groupmode != 1)
-		errx(1, "group_exit called twice");
-
-	TAILQ_FOREACH(cc, &gc->clients, group_entry) {
-		cc->highlight = 0;
-		client_draw_border(cc);
-	}
-
-	if (commit) {
-		_group_commit(gc);
-	} else {
-	  	/* abort */
-	  	_group_purge(gc);
-		if (!TAILQ_EMPTY(&gc->clients))
-	  		_group_destroy(gc);
-	}
-
-	XUnmapWindow(X_Dpy, screen_current()->groupwin);
-
-	if (Groupnamemode) {
-		XSetInputFocus(X_Dpy, Groupfocuswin, Groupfocusrevert,
-		    CurrentTime);
-		Groupfocusset = 0;
-	}
-
-  	Groupmode = Groupnamemode = 0;
-}
-
-void
-group_click(struct client_ctx *cc)
-{
-	struct group_ctx *gc = Group_current;
-
-	if (gc == cc->group)
-		_group_remove(cc);
-	else 
-		_group_add(gc, cc);
-	group_display_draw(screen_current());
-}
-
-
-/* Used to add a newly mapped window to the active group */
-
-void
-group_sticky(struct client_ctx *cc)
-{
-	_group_add(Group_active, cc);
-}
-
 void
 group_sticky_toggle_enter(struct client_ctx *cc)
 {
@@ -321,85 +167,6 @@ group_sticky_toggle_exit(struct client_ctx *cc)
  * selection list display 
  */
 
-void
-group_display_init(struct screen_ctx *sc)
-{
-	sc->groupwin = XCreateSimpleWindow(X_Dpy, sc->rootwin, 0, 0,
-	    1, 1, 1, sc->blackpixl, sc->whitepixl);
-}
-
-void
-group_display_draw(struct screen_ctx *sc)
-{
-	struct group_ctx *gc = Group_current;
-	int x, y, dx, dy, fontheight;
-	struct client_ctx *cc;
-	char titlebuf[1024];
-	struct fontdesc *font = DefaultFont;
-
-	snprintf(titlebuf, sizeof(titlebuf), "Editing group %d", gc->shortcut);
-
-	x = y = 0;
-
-	fontheight = font_ascent(font) + font_descent(font) + 1;
-	dx = font_width(font, titlebuf, strlen(titlebuf));
-	dy = fontheight;
-
-	TAILQ_FOREACH(cc, &gc->clients, group_entry) {
-		cc->highlight = CLIENT_HIGHLIGHT_BLUE;
-		client_draw_border(cc);
-	}
-
-	XMoveResizeWindow(X_Dpy, sc->groupwin, x, y, dx, dy);
-
-	/* XXX */
-	XSelectInput(X_Dpy, sc->groupwin, GroupMask);
-
-	XMapRaised(X_Dpy, sc->groupwin);
-	XClearWindow(X_Dpy, sc->groupwin);
-	font_draw(font, titlebuf, strlen(titlebuf), sc->groupwin,
-	    0, font_ascent(font) + 1);
-}
-
-void 
-group_display_keypress(KeyCode k)
-{
-	struct group_ctx * gc = Group_current;
-	char chr;
-	enum ctltype ctl;
-	int len;
-
-	if (!Groupnamemode)
-		return;
-
-	if (input_keycodetrans(k, 0, &ctl, &chr, 1) < 0)
-		goto out;
-
-	switch (ctl) {
-	case CTL_ERASEONE:
-	  	if ((len = strlen(Group_name)) > 0)
-			Group_name[len - 1] = '\0';
-		break;
-	case CTL_RETURN:
-		if (gc->name != NULL)
-			xfree(gc->name);
-
-		gc->name = xstrdup(Group_name);
-
-		group_exit(1);
-		return;
-	default:
-		break;
-	}
-
-	if (chr != '\0')
-		snprintf(Group_name, sizeof(Group_name), "%s%c", 
-		    Group_name, chr);
-
-out:
-	group_display_draw(screen_current());
-}
-
 /* if group_hidetoggle would produce no effect, toggle the group's hidden state
  */
 void
@@ -495,7 +262,6 @@ group_client_delete(struct client_ctx *cc)
 
 	TAILQ_REMOVE(&cc->group->clients, cc, group_entry);
 	cc->group = NULL; /* he he */
-	cc->groupcommit = 0;
 }
 
 void
@@ -551,14 +317,6 @@ group_menu(XButtonEvent *e)
 }
 
 void
-group_namemode(void)
-{
-	Groupnamemode = 1;
-
-	group_display_draw(screen_current());
-}
-
-void
 group_alltoggle(void)
 {
 	int i;
@@ -577,34 +335,17 @@ group_alltoggle(void)
 }
 
 void
-group_deletecurrent(void)
-{
-	_group_destroy(Group_current);
-	XUnmapWindow(X_Dpy, screen_current()->groupwin);
-
-  	Groupmode = Groupnamemode = 0;
-}
-
-void
-group_done(void)
-{
-	struct group_ctx *gc = Group_current;
-
-	if (gc->name != NULL)
-		xfree(gc->name);
-
-	gc->name = xstrdup(shortcut_to_name[gc->shortcut]);
-
-	group_exit(1);
-}
-
-void
 group_autogroup(struct client_ctx *cc)
 {
 	struct autogroupwin *aw;
 	struct group_ctx *gc;
 	char group[CALMWM_MAXNAMELEN];
 
+	if (Conf.flags & CONF_STICKY_GROUPS) {
+		_group_add(Group_active, cc);
+		return;
+	}
+
 	if (cc->app_class == NULL || cc->app_name == NULL)
 		return;